项目中用的es,记录一下集成过程和遇到的问题,如果有问题,请不吝赐教。
一,集成
引入包只要这些就足够:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty3-client</artifactId>
<version>5.6.14</version>
</dependency>
这里比较大的坑就是版本兼容的问题,刚开始使用的es6.6.2,spingBoot是2.0.4启动提示依赖冲突改成这个5.6.14之后好了,新版本不要轻易尝试。
后面的java代码参考这边即可:https://blog.csdn.net/mjwwjcoder/article/details/79087269
二,关键点:
es启动监听两个端口,9300和9200
9300端口是使用tcp客户端连接使用的端口;
9200端口是通过http协议连接es使用的端口;
这就是为啥,配置文件配置的是9200,代码里却要配置9300才能连通。
三,一个比较坑的地方:
https://blog.csdn.net/qq_36390263/article/details/81348671 这个地址可以解决
http://ip***:port/"index"/_mapping/"type"/?pretty -----单一类型
http://ip***:port/"index"/_mapping/"type"/?update_all_types--多类型,用上面的报错会提示用这个类型
就是设置fieldata=true
四 Elasticsearch设置最大返回条数
(https://www.cnblogs.com/parryyang/p/7976908.html)
在Elasticsearch中如果需要做分页查询,我们通常使用form和size实现。form指定从有序哪一行开始,size表示从当前开始读取多少行。但是我们发现查询结果最大只能到10000,这是因为Elasticsearch中的size的默认值在index.max_result_window 中设置,并且默认值就是10000。下面我们通过Elasticsearch的API设置最大的读取行。
注:Elasticsearch支持的最大值是2^31-1,也就是2147483647。
下面我们来查看一下是否设置成功:
如图,我们的设置成功。
参考:https://www.cnblogs.com/songxingzhu/p/10215812.html
还有一种直接运行curl命令的形式,可以在启动的es上直接生效,当时文章中也指出修改配置文件的方式5.x之后会导致启动报错,亲测curl命令是可行的,命令是:
curl -H "Content-Type: application/json" -XPUT 'http://127.0.0.1:9200/_all/_settings?preserve_existing=true' -d '{
"index.max_result_window" : "1000000000"
}'
或者(命令中只修改一下ip,index不要修改)
curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_settings -d '{ "index" : { "max_result_window" : 100000000}}'
又找到一种可以对规则index设置的方案:
curl -XPUT 127.0.0.1:9200/index-*/_settings -d '{ "index.max_result_window" :"1000000"}'
特殊字符:
https://blog.csdn.net/gong_yangyang/article/details/77505039
五 、服务重启
找到应用kill之后,在bin目录下执行 sh elasticsearch -d (-d 后台执行)
六、关于模板的使用
https://www.cnblogs.com/shoufeng/p/10641560.html
以上地址说的很明确