如何检测 Elasticsearch 中的文档更新是否失败

How to detect if a document update in Elasticsearch has failed

我正在使用 Java API 更新 Elasticsearch 中的文档,有时它会在没有任何迹象的情况下失败(可能是十分之一)。唯一能看到更新是否成功的方法就是阅读文档查看是否已经更新。

IndexResponse 有一个名为 isCreated 的方法,正如其名称所示,只有在成功插入时才 return 为真。无论更新成功与否,此方法都会 return 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();

在修复失败的更新之前,我需要检测请求是否成功。但是怎么办?

P.S。 UpdateResponse 继承自 IndexResponse 并且没有额外的方法来指示更新的状态,或者至少据我所知。

从 UpdateResponse 中,您可以检索一个 ShardInfo 实例,其中包含 failedsuccessful 分片操作的数量。如果 failed: 0,操作成功的几率很高。

int failed = response.getShardInfo().getFailed()