
【实战】SpringBoot 整合 Elasticsearch 实现海量级数据搜索
一、简介
在上篇 ElasticSearch 文章中,我们详细的介绍了 ElasticSearch 的各种 api 使用。
实际的项目开发过程中,我们通常基于某些主流框架平台进行技术开发,比如 SpringBoot,今天我们就以 SpringBoot 整合 ElasticSearch 为例,给大家详细的介绍 ElasticSearch 的使用!
SpringBoot 连接 ElasticSearch,主流的方式有以下四种方式
• 方式一:通过Elastic Transport Client客户端连接 es 服务器,底层基于 TCP 协议通过 transport 模块和远程 ES 服务端通信,不过,从 V7.0 开始官方不建议使用,V8.0开始正式移除。
• 方式二:通过Elastic Java Low Level Rest Client客户端连接 es 服务器,底层基于 HTTP 协议通过 restful API 来和远程 ES 服务端通信,只提供了最简单最基本的 API,类似于上篇文章中给大家介绍的 API 操作逻辑
• 方式三:通过Elastic Java High Level Rest Client客户端连接 es 服务器,底层基于Elastic Java Low Level Rest Client客户端做了一层封装,提供了更高级得 API 且和Elastic Transport Client接口及参数保持一致,官方推荐的 es 客户端。
• 方式四:通过JestClient客户端连接 es 服务器,这是开源社区基于 HTTP 协议开发的一款 es 客户端,官方宣称接口及代码设计比 ES 官方提供的 Rest 客户端更简洁、更合理,更好用,具有一定的 ES 服务端版本兼容性,但是更新速度不是很快,目前 ES 版本已经出到 V7.9,但是JestClient只支持 V1.0~V6.X 版 本的 ES。
还有一个需要大家注意的地方,那就是版本号的兼容!
在开发过程中,大家尤其需要关注一下客户端和服务端的版本号,要尽可能保持一致,比如服务端 es 的版本号是6.8.2,那么连接 es 的客户端版本号,最好也是6.8.2,即使因项目的原因不能保持一致,客户端的版本号必须在6.0.0 ~6.8.2,不要超过服务器的版本号,这样客户端才能保持正常工作,否则会出现很多意想不到的问题,假如客户端是7.0.4的版本号,此时的程序会各种报错,甚至没办法用!
为什么要这样做呢?主要原因就是 es 的服务端,高版本不兼容低版本;es6 和 es7 的某些 API 请求参数结构有着很大的区别,所以客户端和服务端版本号尽量保持一致。
废话也不多说了,直接上代码!
二、代码实践
本文采用的SpringBoot版本号是2.1.0.RELEASE,服务端 es 的版本号是6.8.2,客户端采用的是官方推荐的Elastic Java High Level Rest Client版本号是6.4.2,方便与SpringBoot的版本兼容。
2.1、导入依赖
2.2、配置环境变量
在application.properties全局配置文件中,配置elasticsearch自定义环境变量
2.3、创建 elasticsearch 的 config 类
至此,客户端配置完毕,项目启动的时候,会自动注入到Spring的ioc容器里面。
2.4、索引管理
es 中最重要的就是索引库,客户端如何创建呢?请看下文!
• 创建索引
• 删除索引
• 查询索引
• 查询索引是否存在
• 查询所有的索引名称
• 查询索引映射字段
• 添加索引映射字段
2.5、文档管理
所谓文档,就是向索引里面添加数据,方便进行数据查询,详细操作内容,请看下文!
• 添加文档
• 更新文档
• 删除文档
• 查询文档是不是存在
• 通过 ID 查询指定文档
• 批量添加文档
三、小结
本文主要围绕 SpringBoot 整合 ElasticSearch 接受数据的插入和搜索使用技巧,在实际的使用过程中,版本号尤其的重要,不同版本的 es,对应的 api 是不一样的。
由于篇幅的原因,我们会在下篇文章中重点介绍 es 的各种高级查询 API,文章内容难免会有些遗漏的地方,欢迎网友批评指出!
本文转载自公共号Java极客技术。
