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

标签 java elasticsearch updates

我正在使用 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/

相关文章:

java - 如何让用户不断地将元素输入到JList中

java - 用于衡量 UI 性能的工具

升级到 2.4.0 后,Spring Cloud 配置客户端无法从配置服务器获取/加载配置文件

javascript - React 提升状态

java - 使用Java从PDF中提取图像

java - 如何使用与 PHP mail() 相同的机制在 Java 中发送邮件

elasticsearch - Elasticsearch Groovy脚本eachWithIndex

c# - .NET API 更新包括 ID

elasticsearch - 长度大于20的elasticsearch查询文本字段

elasticsearch - Elasticsearch-将别名从OLD_INDEX指向NEW_INDEX