专业的编程技术博客社区

网站首页 > 博客文章 正文

spring-data-elasticsearch 快速入门-Spring Boot+Elasticsearch

baijin 2024-08-30 11:49:07 博客文章 2 ℃ 0 评论

Spring Data家族对Elasticsearch也进行了封装支持,使用spring-data-elasticsearch,就像使用spring-data-jpa、spring-data-solr、spring-data-redis、spring-data-mongodb等一样操作简单,它们封装的方法类似,提供的接口格式都基本相同,所以开发流程也基本是一样的。

spring-data-elasticsearch 是 Spring Data 的 Community modules 之一,是 Spring Data 对 Elasticsearch 引擎的实现。

Elasticsearch 默认提供轻量级的 HTTP Restful 接口形式的访问。相对来说,使用 HTTP Client 调用也很简单。但 spring-data-elasticsearch 可以更快的支持构建在 Spring 应用上,比如在 application.properties 配置 ES 节点信息和 spring-boot-starter-data-elasticsearch 依赖,直接在 Spring Boot 应用上使用。

1. ElasticsearchRepository 接口

ElasticsearchRepository 是Elasticsearch 通用的存储接口的一种默认实现。Spring 根据接口定义的方法名,具体执行对应的数据存储实现。

ElasticsearchRepository 继承 ElasticsearchCrudRepository ,ElasticsearchCrudRepository 继承 PagingAndSortingRepository,所以一般 CRUD 带分页已经支持。

先看看 ElasticsearchRepository 接口的定义。

@NoRepositoryBean

public interface ElasticsearchRepository<T, ID extends Serializable> extends ElasticsearchCrudRepository<T, ID> {

<S extends T> S index(S var1);

Iterable<T> search(QueryBuilder var1);

Page<T> search(QueryBuilder var1, Pageable var2);

Page<T> search(SearchQuery var1);

Page<T> searchSimilar(T var1, String[] var2, Pageable var3);

void refresh();

Class<T> getEntityClass();

}

ElasticsearchRepository 继承关系如下所示。除了有CRUD的基本功能之外,还有分页和排序。

/**

* 接口关系:

* ElasticsearchRepository --> ElasticsearchCrudRepository --> PagingAndSortingRepository --> CrudRepository --> Repository

*/

这里的Repository相当于DAO,操作MySQL 还是elasticsearch都是一样的。

2. spring-data-elasticsearch 依赖包

pom文件中导入依赖。

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-elasticsearch</artifactId>

</dependency>

<!-- Spring Boot 父依赖 -->

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.1.7.RELEASE</version>

<relativePath/>

</parent>

如下是相关jar版本以及依赖关系。

Spring Data Elasticsearch 和 Elasticsearch 版本之间的兼容性,可以参考如下表格:

https://github.com/spring-projects/spring-data-elasticsearch

如果想要使用最新的 Elasticsearch,可以通过默认的Java High Level REST Client API调用去实现。

3. 添加Elasticsearch相关配置项

修改application.yml配置文件,添加Elasticsearch 节点配置。

spring:

data:

elasticsearch:

cluster-nodes: 127.0.0.1:9300

默认 9300 是 Java 客户端的端口。9200 是支持 Restful HTTP 的接口。

cluster-name:elasticsearch 集群名。(默认值: elasticsearch)

cluster-nodes:集群节点地址列表,用逗号分隔。

repositories.enabled: 开启 Elasticsearch 仓库。(默认值:true)

4. Elasticsearch 数据操作层

接口只要继承 ElasticsearchRepository 类即可。

默认会提供很多实现,比如 CRUD 和搜索相关的实现。类似于 JPA 读取数据,是使用 CrudRepository 进行操作 ES 数据。支持的默认方法有: count(), findAll(), findOne(ID), delete(ID), deleteAll(), exists(ID), save(DomainObject), save(Iterable<DomainObject>)。

完整代码,可以参考如下链接:

Elasticsearch 6.4.3 和Spring Boot 2.1.7集成-实战演练完整代码

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表