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 extends ElasticsearchCrudRepository {

S index(S var1);

Iterable search(QueryBuilder var1);

Page search(QueryBuilder var1, Pageable var2);

Page search(SearchQuery var1);

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

void refresh();

Class getEntityClass();

}

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

/**

* 接口关系:

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

*/

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

2. spring-data-elasticsearch 依赖包

pom文件中导入依赖。

org.springframework.boot

spring-boot-starter-data-elasticsearch

org.springframework.boot

spring-boot-starter-parent

2.1.7.RELEASE

如下是相关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)。

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

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

elasticsearch_spring-data-elasticsearch 快速入门-Spring Boot+Elasticsearch相关推荐

  1. Spring基础:快速入门spring boot(7):spring boot 2.0简单介绍

    从这篇文章开始以spring boot2为主要版本进行使用介绍. Spring boot 2特性 spring boot2在如下的部分有所变化和增强,相关特性在后续逐步展开. 特性增强 基础组件升级: ...

  2. [快速入门]Spring Boot+springfox-swagger2 之RESTful API自动生成和测试

    Swagger是自动生成 REST APIs文档的工具之一.Swagger支持jax-rs, restlet, jersey.springfox-swagger是Spring生态的Swagger解决方 ...

  3. Elasticsearch实战篇——Spring Boot整合ElasticSearch

    2019独角兽企业重金招聘Python工程师标准>>> 当前Spring Boot很是流行,包括我自己,也是在用Spring Boot集成其他框架进行项目开发,所以这一节,我们一起来 ...

  4. ElasticSearch实战篇 - Spring Boot 整合 ElasticSearch

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 作者:冯文议 链接:segmentfault.com/a/1190000018625101 当前Spring Boot很是流行,包括我自己, ...

  5. win7 x64 基于spring boot+elasticsearch+Redis+mysql+mybatis进行搜索引擎web开发--爬取IThome热评(一)

    因为工作需要,我准备在win7 x64系统上基于springboot +elasticsearch+redis搭建全文索引服务器. 1. elasticsearch安装比较方便,直接去官网下载了ela ...

  6. ELK之ElasticSearch快速入门

    ElasticSearch快速入门 一.简介 二.下载 三.启动 4.基本概念 5. 一.简介 官网:https://www.elastic.co/ ElasticSearch是Elastic Sta ...

  7. Elasticsearch快速入门2 - 高级查询功能

    我们在Elasticsearch快速入门1中详细介绍了ES的安装.基本概念和一些基本的REST Api请求,在这篇入门(2)中,我们继续介绍ES的高级查询功能. 为了说明ES强大的搜索功能,我们还以上 ...

  8. boot入门思想 spring_(第一讲)Spring Initializr-快速入门Spring Boot的最好选择

    1讲:Spring Initializr-快速入门Spring Boot的最好选择 Spring Initializr [http://start.spring.io/]是引导你快速构建Spring ...

  9. 快速上手 Spring Boot 项目开发

    1. 从零开始 Spring Boot 工程    Spring Boot 可以快速构建基于 Spring 框架的 JavaWeb 应用,快速整合包括视图层.MVC架构以及持久化层在内的各种框架,不需 ...

最新文章

  1. php函数,static,globalkeyword及三种变量作用域
  2. 我要做一个什么样的程序员
  3. at( ) [ ]
  4. NAVICAT连接oracle数据库的时候出现ora-01033
  5. Spring MVC 入门--Hello World
  6. 世界杯直播背后:腾讯云极速高清技术部署实录
  7. Java中的PriorityBlockingQueue
  8. fcpx调整图层_【FCPX萌新系列】新手常遇到的4个基础调色问题
  9. Smarty中直接加JS代码和将JS代码写在literal标签里
  10. C#中构造函数和析构函数的用法
  11. C++数据范围及字节对照表
  12. 微信小程序文档api
  13. 802.11--802.11n协议 PHY
  14. keil cannot reset target shutting 新解决办法
  15. SIM卡被猫吃了,1860电话录音
  16. 制作统一样式的H5视频播放器
  17. C# Parellel.For 和 Parallel.ForEach
  18. C语言和汇编语言函数调用
  19. C# 汉字与拼音互转
  20. linux下socket编程处理TCP粘包

热门文章

  1. GraphQL API 的查询语言
  2. 为Web 开发者Bug 报告和跟踪工具
  3. python常用程序代码(持续更新收集)
  4. ABP之Javascript生成
  5. Docker+SVN
  6. 谈对阿里应用分层的思考
  7. Debian+Django+uWsgi+nginx+mysql+celery
  8. swoole深入学习 2. tcp Server和tcp Client
  9. Windows创建的基本含义和进程的进程的内核
  10. poj 1001 分析