Elasticsearch Rest High Level Client从6.3.2升级至7.17.4时XContentBuilder类找不到的问题求助
我之前升级Elasticsearch客户端的时候也碰到过一模一样的问题,结合你的情况,咱们可以从这几个方向排查:
检查依赖冲突:项目里可能还残留着6.3.2版本的Elasticsearch相关依赖,和7.17.4的依赖产生了冲突。你可以执行
mvn dependency:tree(如果用Gradle就执行./gradlew dependencies)命令,查看依赖树里有没有低版本的elasticsearch或elasticsearch-x-content依赖。如果有的话,在你的7.17.4依赖里手动排除旧版本,比如:<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.17.4</version> <exclusions> <exclusion> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> </exclusion> <exclusion> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> </exclusion> </exclusions> </dependency>修正导入语句:XContentBuilder的包路径在Elasticsearch 7.x版本里发生了变化!6.x版本它在
org.elasticsearch.common.xcontent.XContentBuilder,但7.x里移到了org.elasticsearch.xcontent.XContentBuilder。你需要检查代码里的import语句,把旧路径改成新的,这是很多人升级时容易忽略的点。确认依赖Scope:确保你的
elasticsearch-x-content依赖的scope是compile(默认就是这个,但如果不小心改成了provided或者test,编译时就会找不到类)。你的依赖配置里看起来是对的,但可以再确认一下。清理并重新构建:有时候本地Maven仓库的依赖文件可能损坏或者没更新完全。执行
mvn clean install -U命令,强制清理旧的构建产物并更新所有依赖,然后重新编译项目。
如果做完这些还是有问题,你可以把mvn dependency:tree输出里和Elasticsearch相关的部分贴出来,这样能更精准地定位冲突点。
内容的提问来源于stack exchange,提问作者Bhans345




