ES更新问题 Failed to close the XContentBuilder异常

问题描述

使用RestHighLevelClient对文档进行局部更新的时候报错如下:

复制代码
Suppressed: java.lang.IllegalStateException: Failed to close the XContentBuilder
		at org.elasticsearch.common.xcontent.XContentBuilder.close(XContentBuilder.java:1011)
		at org.elasticsearch.common.xcontent.XContentHelper.toXContent(XContentHelper.java:362)
		... 8 more
	Caused by: java.io.IOException: Unclosed object or array found
		at org.elasticsearch.common.xcontent.json.JsonXContentGenerator.close(JsonXContentGenerator.java:469)
		at org.elasticsearch.common.xcontent.XContentBuilder.close(XContentBuilder.java:1009)
		... 9 more

相关代码如下:

复制代码
UpdateRequest request = new UpdateRequest("user","1001");
request.doc(XContentType.JSON, "sex","男");

UpdateResponse updateResponse = client.update(request, RequestOptions.DEFAULT);

分析排查问题过程

下面这是ES 7.9.3版本客户端局部更新的文档,每种写法都试过了,报错都一样的

Update API | Java REST Client 7.9 | Elastic

基本排除代码问题,怀疑是客户端版本bug

客户端升级到7.17.1,问题解决

后续发现

因为我一直在elasticsearch仓库找不到对应的issue和问题修复代码,我就继续查了下,无意中发现存在maven依赖冲突,将log4j-core的冲突排掉后,问题竟然也解决了。

所以应该不是7.9.3版本的bug,而是本地依赖冲突,日志相关功能影响到XcontentBuilder关闭,具体的等日后加深理解后再继续分析

相关推荐
·薯条大王9 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
互联网中的一颗神经元9 小时前
04 — 安全撤销:改错了怎么退回去
大数据·安全·elasticsearch
ZJH__GO12 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆12 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光12 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
凤山老林12 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端
marvelyu13 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
AI人工智能+电脑小能手14 小时前
大白话说Java设计模式-04-工厂方法模式(业务实战篇)
java·设计模式·工厂方法模式·架构设计·代码解耦
BUG指挥官14 小时前
Sa-Token和Spring Security对比
java·后端·spring
小当家.10514 小时前
深入理解 ReAct Agent:从原理到 Java 实战
java·react.js·agent·react·架构设计·agent设计