Elasticsearch索引数据时出现CheckedConsumer类未找到异常如何解决
根因分析
org.elasticsearch.common.CheckedConsumer 仅在Elasticsearch 7.11.x及更早版本的elasticsearch-common依赖包中存在,Elasticsearch官方从7.12版本开始移除了该类。你当前使用的Apache Camel 3.12.0内置的camel-elasticsearch-rest组件默认适配的是Elasticsearch 7.10.x版本客户端,与你引入的7.15.1版本ES依赖不兼容,因此触发类找不到异常。
解决方案
- 方案1:强制指定ES客户端版本(无需调整服务端版本)
Elasticsearch高版本服务端兼容低版本官方高级客户端,你可以在项目依赖管理中强制统一所有ES相关依赖的版本为7.10.2,即可补全缺失的类。
Maven项目参考配置(添加到pom.xml的dependencyManagement节点下):<dependencies> <!-- 统一ES所有模块版本为7.10.2 --> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-common</artifactId> <version>7.10.2</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.10.2</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>7.10.2</version> </dependency> </dependencies> - 方案2:升级Apache Camel版本
Apache Camel从3.14.0版本开始支持Elasticsearch 7.12+版本客户端,将Camel版本升级到3.14.0及以上稳定版,即可适配7.15.1版本的ES依赖。 - 方案3:降级ES服务端版本
若不想调整项目依赖版本,可将Elasticsearch服务端版本降级到7.10.2,和Camel 3.12.0默认适配的客户端版本完全对齐,即可解决兼容问题。
排查验证
修改依赖后可执行mvn dependency:tree(Gradle项目执行./gradlew dependencies)命令检查所有elasticsearch相关依赖的版本,确保版本统一无冲突。
内容的提问来源于stack exchange,提问作者Triveni K
相关产品推荐
相关产品推荐

