我使用的是Elasticsearch7.2.0,因为官网上推荐使用elasticsearch-rest-high-level-client端集成在springboot因此尝试爬坑。html
首先直接引入官网的配置文件java
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.2.0</version> </dependency>
而后在运行时报错:spring
... ... Caused by: java.lang.ClassNotFoundException: org.elasticsearch.common.xcontent.DeprecationHandler ... ...
百度了一下说jar里的Elasticsearch版本有错,要移除了再从新引入,因此把配置文件改为下面的样子springboot
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.2.0</version> <exclusions> <exclusion> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> </exclusion> </exclusions> </dependency> <!-- 正确版本 --> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.2.0</version> </dependency>
而后再次启动,Elasticsearch正常运行,可是发现spring的rest服务运行不正常,配置的Filter没有正常运行,且不报错。网上找了好久也没有找到有相似错误的问题,后来反复查看官网,他说elasticsearch-rest-high-level-client是基于elasticsearch-rest-client的,我就猜这个基于会不会是依赖的意思呢?bash
因而把配置改为了这样:elasticsearch
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.2.0</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>7.2.0</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.2.0</version> </dependency>
而后再次启动,Elasticsearch正常运行,REST服务也正常,个人老天鹅,终于能够了。rest
后来我找到了这篇文章Elasticsearch High Level REST Client,具体配置能够参考下code