在调用es java客户端,执行新增es文档时报错:Unable to parse response body for Response
返回201,表示插入成功
java.io.IOException: Unable to parse response body for Response{requestLine=PUT /company/_doc/39?timeout=1m HTTP/1.1, host=http://127.0.0.1:31200, response=HTTP/1.1 201 Created}
可以在kibana查询新增数据
原因分析:
老版本es客户端无法解析新版es的返回,有可能是 spring-boot 版本低了,没有做这方面的处理(数据是能保存进 es 的,而且 es 也不报错)
处理:
通过获取返回体异常信息,判断处理
/**
* 新增文档
*
* @param indexName
* @param id
* @param docObj
* @return
*/
public void addDoc(String indexName, String id, Object docObj) {
log.info("es新增文档,文档内容:{}",docObj);
try {
IndexRequest indexRequest = buildAddDoc(indexName, id, docObj);
restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
String msg = e.getMessage();
if (!msg.contains("Created")&&!msg.contains("200 OK")){
log.error("es新增文档失败,异常信息:", e);
throw new RuntimeException(e);
}
}
}
再次执行,正常运行