Springbott2.1.4之整合elasticsearch
1.理解Elasticsearch是干什么的?
Elasticsearch是一个基于Lucene库的搜索引擎,它提供了一个多分布服务。它是用java开发的,可以快速的存储,搜索和分析海量数据的全文搜索引擎。
2.Springboot通过什么整合Elasticsearch?
Springboot是基于Jest和SpringData(默认)对Elasticsearch进行整合的。
3.过程:
1.安装elasticsearch
这里我是用linux的docker来安装的elasticsearch,如果你还没学习可以先学docker后再看。
docker pull elasticsearch:6.4.8
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9200:9200 -p 9300:9300 -d 你elasticsearch对应的id --name xxxx
这里可能会出现启动后elasticsearch会自动关闭
这个时候检查elasticsearch的启动日志
docker logs 对应id或名
可以发现日志告诉你空间不足(256m太小了)
这个时候输入
sysctl -w vm.max_map_count=262144
这个时候使用docker start id或name即可
然后访问你的elasticsearch
看到这个页面表明你的elasticsearch启动成功了
2.Springboot基于Jest整合的过程:
首先是导入jest相关的依赖,并且注释掉springdata相关的依赖
源码分析:
在这里我们使用的是JestClient的接口来操作数据
我们进入JestProperties可以看到,我们在yml或者properties可以使用spring.elasticsearch.jest来对JestProperties的属性进行设置,并且它默认的路径是本机的9200端口。
大概知道了上面两个源码类那么我们来配置Springboot
spring.application.name=springboot-elastic2.0 spring.elasticsearch.jest.uris=http://192.168.43.12:9200
在application.properties中配置你要连接的路径,修改你的spring应用名字。
找到测试类,写入如上的代码。当然前提你要写个bean这里就不说了。
解释下index是说你的索引是谁,type是类型是什么。这里需要设置你的索引和类型。
最后直接执行即可
若是没有报错,就可以查看你刚存储的的数据了。
这里的_search标识查看当前索引下类型下的所有数据
也可进行查询,这里的String是按照elasticsearch官网提供的文档写法写入的。
你也可以用postman查看
因为是新版本的elasticsearch可能会出现header的错误,这个时候你可以进入docker容器中进行如下操作:
进入head安装目录的 _site/ 文件目录,如果是使用 Docker 安装,需要先进入 Docker 容器。
找到vendor.js文件并编辑,共有两处
第一处在6886行
把内容 'application/x-www-form-urlencoded' 改成 'application/json;charset=UTF-8'
第二处在7574行
把内容 'application/x-www-form-urlencoded' 改成 'application/json;charset=UTF-8'
此时查询到即可。
3.Springboot整合springdataelasticsearch
在maven中引入相关依赖
写一个实体类
此处的@Document表示这个实例属于哪个索引下的哪个类型
在application.properties中写入:
spring.data.elasticsearch.cluster-name=docker-cluster spring.data.elasticsearch.cluster-nodes=192.168.43.12:9300
要写入你elasticsearch节点名和节点
写入一个接口
测试传入然后查询即可。
这里的findBookById相当于用了JPA的思想实现了接口查询功能。