我正在使用 Java API 更新 Elasticsearch 中的文档,但有时它会在没有任何指示的情况下失败(可能是十分之一)。我查看更新是否成功的唯一方法就是阅读文档检查是否已更新。
IndexResponse
有一个名为 isCreated
的方法,正如其名称所示,只有在插入成功时才会返回 true。无论更新成功与否,此方法都会在更新时返回 false。
这是我更新文档的代码:
IndexRequest indexRequest = new IndexRequest(index_name, type_name, doc_id)
.source(json);
UpdateRequest updateRequest = new UpdateRequest(index_name, type_name, doc_id)
.doc(json)
.upsert(indexRequest);
UpdateResponse response = es_client.update(updateRequest).actionGet();
在修复失败的更新之前,我需要检测请求是否成功。但如何呢?
附注UpdateResponse
继承自 IndexResponse
并且没有额外的方法来指示更新的状态,或者至少据我所知。
最佳答案
从 UpdateResponse 中,您可以检索 ShardInfo
实例,其中包含失败
和成功
分片操作的数量。如果失败:0
,则操作成功的可能性很高。
int failed = response.getShardInfo().getFailed()
关于java - 如何检测 Elasticsearch 中的文档更新是否失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38928991/