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



我正在使用Java API更新Elasticsearch中的文档,有时它会在没有任何指示的情况下失败(可能是1/10)。我能看到更新是否成功的唯一方法是阅读文档以检查它是否已更新。

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,没有额外的方法来指示更新状态,至少据我所知。

从updaterresponse中,您可以检索ShardInfo实例,其中包含failedsuccessful分片操作的数量。如果是failed: 0,操作成功的概率很大。

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

相关内容

  • 没有找到相关文章

最新更新