java开发中使用ES 需要注意的一些细节


        之前使用ES主要还是通过ELK去处理日志,由于项目需求,现在需要单独使用ES进行功能拓展,于是申请了一个3节点的ES集群,与当前项目进行整合。调试过程中遇到一些问题记录一下。

首先项目使用的Springboot版本是2.1.7 RELEASE,运维装好的ES版本是6.6.0,就在这个版本固定的情况下进行集成。在实践中,发现大多数问题都是版本上的不匹配出现的问题。首先来看一个官网的图:

第一反应就是直接用同版本jar包,于是pom文件里加入es6.6.0的相关依赖,配合spring-data-elasticsearch 3.1.4.RELEASE 进行集成,写好ElasticsearchConfig和配置文件,开始调试。这里需要注意的两个配置文件中的细节。1.配置文件中es默认端口应该是9300而不是9200;2.clustername也需要对应好已安装的ES对应字段。

         调试过程中发现如下报错:java.lang.ClassNotFoundException:org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse

         查看源码发现是ES 6.6.0版本包中没有该类,所以还是版本上的有些冲突,把ES 6.6.0版本依赖注释以后,发现Springboot 2.1.7 RELEASE自带的ES版本包会加载进来,当然前提是spring-data-elasticsearch 依赖的引入,这个时候ES相关jar包版本是6.4.3的,继续调试发现该版本下,已经无报错。持续测试一段时间如果没有问题,即可确认版本无误。

         虽然这是在版本固定的情况下进行的集成,但也不难发现最常出现的问题,还是版本不匹配。有了这样的思路,在其他版本ES环境下遇到类似情况,都可以尝试通过这种方式去获取线索,解决问题。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM