最近,当我用BulkRequest将数据写入elasticsearch时,我得到了以下异常:
org.elasticsearch.action.ActionRequestValidationException: Validation Failed: 1: id is missing;
at org.elasticsearch.action.bulk.BulkRequest.validate(BulkRequest.java:614)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1731)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1697)
at org.elasticsearch.client.RestHighLevelClient.bulk(RestHighLevelClient.java:473)
at com.clougence.cloudcanal.es6.task.write.full.Es6FullInsertExecutorImpl.insert(Es6FullInsertExecutorImpl.java:70)
at com.clougence.cloudcanal.es6.task.write.full.Es6FullApplyHandler.handle(Es6FullApplyHandler.java:35)
at com.clougence.cloudcanal.es6.task.write.full.Es6FullApplyHandler.handle(Es6FullApplyHandler.java:16)
at com.clougence.cloudcanal.task.applier.full.FullApplyWorkHandler.onEvent(FullApplyWorkHandler.java:61)
at com.clougence.cloudcanal.task.applier.full.FullApplyWorkHandler.onEvent(FullApplyWorkHandler.java:20)
at com.lmax.disruptor.WorkProcessor.run(WorkProcessor.java:143)
at java.lang.Thread.run(Thread.java:748)
我的代码如下。我调试我的代码,发现esIdValue是空的,这会导致异常。
updateRequest = new UpdateRequest().index(indexDef.getIndexName())
.id(esIdValue)
.type(DEFAULT_TYPE)
.doc(docMap)
.docAsUpsert(true);
bulkRequest.add(updateRequest);
我的问题是,elasticsearch支持编写一个_id值为"“的文档。我可以将空的_id值放入es中吗?
发布于 2021-03-09 15:42:57
ES _id字段不支持"“这样的空白字符。
你有两个选择:
。
UpdateRequest().index(indexDef.getIndexName()) =新bulkRequest.add(updateRequest) .type(DEFAULT_TYPE) .doc(docMap) .docAsUpsert(真);
https://stackoverflow.com/questions/66531015
复制相似问题