Elasticsearch Java API客户端操作报错:无法获取JsonProvider
Elasticsearch Java API客户端数据插入报错解决方案
报错本质
你遇到的JsonpMappingException核心原因是缺少Jakarta JSON Processing (JSON-P)的具体实现类——jakarta.json-api-2.0.1.jar仅为API规范定义,没有实际执行JSON序列化/反序列化的代码,导致客户端无法找到JsonProvider实例完成数据处理。
具体解决步骤
补充JSON-P实现包
必须在类路径中加入JSON-P的官方实现包:jakarta.json-2.0.1.jar,版本需与你已有的jakarta.json-api-2.0.1.jar保持一致。对齐依赖版本兼容性
- Elasticsearch Java客户端8.6.2建议搭配Jackson 2.13.x及以上版本,你当前使用的2.12.3存在兼容风险,建议升级至
jackson-databind-2.13.4.2或同系列稳定版本。 - 尽量让Elasticsearch客户端版本与服务端(8.6.1)保持一致,小版本差异虽通常兼容,但统一版本能避免潜在问题。
- Elasticsearch Java客户端8.6.2建议搭配Jackson 2.13.x及以上版本,你当前使用的2.12.3存在兼容风险,建议升级至
确认最终类路径依赖
调整后类路径需包含以下核心文件:- elasticsearch-java-8.6.1.jar(推荐与服务端版本对齐)
- jackson-databind-2.13.x.jar
- jakarta.json-api-2.0.1.jar
- jakarta.json-2.0.1.jar
依赖管理工具快捷配置
如果使用Maven或Gradle,无需手动下载jar包,直接添加以下依赖即可:
Maven配置
<dependency> <groupId>co.elastic.clients</groupId> <artifactId>elasticsearch-java</artifactId> <version>8.6.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.4.2</version> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>jakarta.json</artifactId> <version>2.0.1</version> </dependency>
Gradle配置
implementation 'co.elastic.clients:elasticsearch-java:8.6.1' implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.4.2' implementation 'org.glassfish:jakarta.json:2.0.1'
内容的提问来源于stack exchange,提问作者Dhruvajyoti Chatterjee
相关产品推荐
相关产品推荐

