You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Elasticsearch Rest High Level Client从6.3.2升级至7.17.4时XContentBuilder类找不到的问题求助

解决Elasticsearch 7.17.4中找不到XContentBuilder的问题

我之前升级Elasticsearch客户端的时候也碰到过一模一样的问题,结合你的情况,咱们可以从这几个方向排查:

  • 检查依赖冲突:项目里可能还残留着6.3.2版本的Elasticsearch相关依赖,和7.17.4的依赖产生了冲突。你可以执行mvn dependency:tree(如果用Gradle就执行./gradlew dependencies)命令,查看依赖树里有没有低版本的elasticsearchelasticsearch-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

火山引擎 最新活动