雷丰阳springboot之检索之elasticsearch整合
2021/5/5 10:55:53
本文主要是介绍雷丰阳springboot之检索之elasticsearch整合,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 搭建环境
- 搜索镜像
- 下载镜像
- 运行镜像
- 测试一下
- es快速入门
- 例子理解基本概念
- 保存数据
- postman发送请求
- 检索文档
- 轻量搜索
- 查询表达式搜索
- 全文搜索
- 短语搜索
- 高亮搜索
- springboot整合es
- 创建新的工程
- es自动配置做了什么
- 总结-1
- jest自动配置
- spring data ElasticsearchAutoConfiguration
- elasticsearchClient
- 1 - elasticsearchDataAutoConfiguration
- 2 - ElasticsearchRepositoriesAutoConfiguration
- 3 - 总结
- 4 - 注释
- 5 - 导入jest
- 6 - jest自动配置
- 7 - application.properties
- 8 - 启动
- 9 - 需要先写个bean
- 10 - 测试JestClient操作ES
- 11 - 测试使用Jest来进行搜索
- 12 - Jest其他的操作
- 0 - 整合spring data es模块
- 1 - 操作pom文件
- 2 - application.properties
- 3 - 启动项目
- 4 - spring data 官方文档
- 5 - 分析当前spring-boot版本适配关系
- 6 - 解决方法
- 7 - 请注意
- 8 - 安装2.4.6的es
- 9 - 修改application.properties
- 10 - 再次启动项目
- 11 - 总结
- 12 - ElasticsearchRepository
- 13 - 子接口
- 14 - 测试给ES保存数据
- 15 - 接口ctrl+f12
- 16 - 接口自定义方法
- 17 - ElasticsearchTemplate的使用例子
Lucene是一个开源的,搜索引擎软件工具包。
这个开源的库,如果我们想要直接用,我们就必须,自己写代码,来调用它里面的API,是比较麻烦的。
ES相当于,是对Lucene的一层封装,并且ES提供Restful API的接口。
我们可以直接发送请求的方式,就可以操作ES。
大型网站:维基百科、stackoverflow、github都是用es的。
搭建环境
连接上我们的虚拟机。
搜索镜像
下载镜像
运行镜像
es是用java写的,默认初始会占用2个G的堆内存空间。
我的虚拟机内存空间不够的。
我们可以加上一个-e
的命令,来限制它的堆内存空间使用,要不然,可能会启动报错的。
更加详细的信息,可以参照官方的文档。
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ES01 [IMAGE ID]
es默认使用的端口是9200的,当分布式的情况下,es各个节点之前的通信,使用的是9300的端口,我们也暴露出来。
测试一下
表示安装成功了。
es快速入门
学习es的,最好的资料,就是官方文档。
json有天然的,轻量级,和,跨平台的优势。
我们一个json文档,就代表,一个数据对象。
例子理解基本概念
- 存储一些雇员数据,放在ES中。
- 员工数据,是以雇员文档,就是刚才看到的JSON文档的形式,存储的。
- 我们把,给ES当中,存数据的行为,叫做索引。
- 其实,索引,就是存储的意思而已。
- 索引的第二层意思,就是数据库的意思了。
索引 | 数据库 |
---|---|
类型 | 表 |
文档 | 记录、行 |
属性 | 字段 |
宫睿这个女人,只有身材是不错的。
保存数据
我们保存文档到ES当中::
postman发送请求
同样的方式,我们存进去3个员工。
这个时候,ES就能够帮我们分析和搜索这些数据了。
检索文档
如果发送DELETE请求,这是删除员工的。
如果发送HEAD请求,这是检查,是不是有这个员工的。
这就是,使用rest风格请求,对es数据,进行增删改查。
轻量搜索
查询表达式搜索
post请求,是用来,使用查询表达式,搜索的哦。
全文搜索
短语搜索
这个就是短语完全匹配的意思。全文检索的时候,有任何一个单词都行的。像是上面的例子当中,rock clibing。
高亮搜索
其实,就是在玩这些查询表达式。
springboot整合es
创建新的工程
选择web模块,是为了方便测试。
springboot是默认使用spring data模块来操作elasticsearch。
es自动配置做了什么
这是spring data对es的自动配置部分。
这是jest,是非常流行的es客户端工具,是用http的方式,和es进行交互的。
总结-1
到底哪种技术是默认生效的呢?
jest自动配置
spring data ElasticsearchAutoConfiguration
这个自动配置文件做了什么呢?
elasticsearchClient
给IOC容器中注入了一个elasticsearchClient。
我们客户端上,需要配置ClusterNodes这个信息。
包括ClusterNames这个信息。
1 - elasticsearchDataAutoConfiguration
在这里,帮我们往IOC容器当中,配置了一个:ElasticsearchTemplate。
到这里,基本上,我们也回过味来了。
JdbcTemplate,RedisTemplate,RabbitTemplate,ElasticsearchTemplate。
这说明springboot,喜欢,在整合别人的时候,注入一个XXXTemplate的东西。
2 - ElasticsearchRepositoriesAutoConfiguration
这个ElasticsearchRepositoriesAutoConfiguration的作用,就是启用了ElasticsearchRepository接口,这个,就类似JPA的那种编程方式一样的。我们可以写一个接口,来继承这个ElasticsearchRepository,我们的接口,就会有相应的方法了。
3 - 总结
接下来,我们是分别测试,用这两种方式,来操作es。
4 - 注释
我们先在pom文件当中,将spring-boot-starter-data-elasticsearch来注释掉。
5 - 导入jest
6 - jest自动配置
我们查看一下jest的自动配置类,有没有生效的。
我们从jestAutoConfiguration当中,找到JestProperties,然后进入去看看:
这里面,展示了,哪些东西,是我们可以在application.properties当中配置的。
7 - application.properties
8 - 启动
9 - 需要先写个bean
10 - 测试JestClient操作ES
启动一下,然后从浏览器当中,查询一下,就得到了,下面的结果:
11 - 测试使用Jest来进行搜索
然后,我们启动了这个程序,我们从控制台中,看到了,它搜索出来了,内容当中携带hello的内容了。
12 - Jest其他的操作
JestClient的基本的操作,就是,上面的两个演示的内容。
更多的,详细的功能,我们可以参考github上面,这个项目的,官方文档。
来学习,其他的,高级的,一些东西。
0 - 整合spring data es模块
1 - 操作pom文件
我们把原来,我们在测试jest的时候,关闭的,spring-data相关的依赖内容,重新打开。
就是如上图,所示的内容。
2 - application.properties
要在application.properties当中,配置节点的名字的哦。
我们es的节点的相关的信息,可以参考下面的内容:
我们的配置信息,是如下所示的:
3 - 启动项目
如果,我们只是修改了pom文件,只是配置了上面的两个东西。然后启动项目,可能是会,出现下面的报错的:
因为节点之间的通信,是使用9300端口的,但是,我们在启动项目的时候,居然是报了上面的错误的。
这个是为什么原因呢?
这主要是因为项目当中,使用的es是2.4.6的版本:
而,我们启动的es的版本是5.6.9的版本哦。
这个,也就是说,springdata的es版本,有可能是,不合适的。
我们需要找到一个合适的,spring data版本才可以。
我们接下来,参考一下官方文档。
4 - spring data 官方文档
5 - 分析当前spring-boot版本适配关系
根据上面的,spring data官方文档,我们可以知道,这个版本都是对应于es的2.x版本的。
6 - 解决方法
现在,我们有两种办法,来解决,这个版本适配的问题。
第一种方法,我们升级spring boot的版本,我们使用更高版本的spring boot版本,这样我们的spring data的版本就会更高,我们的spring data elasticsearch的版本,就会更高的。这样,就解决了这个问题了。
第二种方法,我们需要安装一个,2.x版本的es的。
7 - 请注意
8 - 安装2.4.6的es
安装成功。
9 - 修改application.properties
10 - 再次启动项目
这里,显示启动成功.
那么,我们做了,这么多的目的,就是为了测试,使用spring data es模块,来操作es的。
现在,我们应该怎么做呢?
我们应该是有两种用法的。
可以参考官方文档:https://github.com/spring-projects/spring-data-elasticsearch
第一种,是编写ElasticsearchRepository的子接口。
第二种,是使用ElasticsearchTemplate来操作es。
11 - 总结
12 - ElasticsearchRepository
第一步,先写个接口。
第二步,我们的这个接口,是需要继承extends ElasticsearchRepository的,这个接口是,有两个泛型的。
第一个泛型,是我们要存储的数据的类型,第二个范晓萱,是主键ID的泛型。
第三步:我们写一个bean吧。
13 - 子接口
我们的子接口,写好了之后。
这个子接口,就具备了,ElasticsearchRepository当中的,方法了。
14 - 测试给ES保存数据
我们的bean上面,要加上es相关的注解哦:
这里面是测试,给ES当中保存数据:
我们查询一下,得到的结果,是这样的:
这是证明,已经存储进去了。
15 - 接口ctrl+f12
在这个接口,当中,有好多好多的方法的。
这个,也支持,自定义的方法的。
16 - 接口自定义方法
这里,只写了个接口,也没有写什么接口的实现,这玩意,就能用了吗?
我们发现,确实是查询成功了:
为什么会出现这么神奇的效果呢?
在官方文档当中,对查询方法,怎么命名,对应怎么样的query string,有一一的对比说明哦:
如果你自定义了一个方法,也支持用@Query注解,将查询表达式,标注在一个方法上面的:
17 - ElasticsearchTemplate的使用例子
在官方文档中,是有这个东西的:
这篇关于雷丰阳springboot之检索之elasticsearch整合的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略