java - 如何在 Elasticsearch Java 高级客户端 6.8 的响应中只获取失败的文档

标签 java elasticsearch bulkinsert resthighlevelclient elasticsearch-rest-client

在使用 Elasticsearch Java 高级 REST 客户端进行批量请求时,是否有任何方法可以仅在响应中获取失败的文档。

目前,ES 正在响应中发送所有成功和失败的文档,我们正在重新处理所有失败的文档,我们正在迭代 BulkItemResponse 以找到失败的文档并重新处理它。

private BulkRequest createBulkRequestsForRetry(BulkResponse bulkItemResponses, BulkRequest currentBulkRequest) {
        BulkRequest bulkRequest = new BulkRequest();
        int index = 0;
        for (BulkItemResponse bulkItemResponse : bulkItemResponses.getItems()) {
            if (bulkItemResponse.isFailed()) {
                bulkRequest.add(currentBulkRequest.requests().get(index));
            }
            index++;
        }
        return bulkRequest;
    }

作为 bulkItemResponse.getItems() 表示批量操作中执行的每个操作(以相同的顺序!)。

最佳答案

到目前为止,即使在最新的 7.7 版本的客户端中,这个功能也不存在,如果你想要这个功能,你可以创建一个问题或者更好地提交一个 PR 来解决这个问题,这将是一个非常有用的功能.

你可以看看complete BulkResponse看看你自己,master 分支中也没有这样的功能。

还有 here您可以向 Elasticsearch 创建问题。

关于java - 如何在 Elasticsearch Java 高级客户端 6.8 的响应中只获取失败的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62209300/

相关文章:

mysql - 插入 100 万条记录花费太多时间 MYSQL

java.lang.NoSuchMethodError : stub class initialization failed 错误

java - 如何确保添加到数组的对象的 ID 不存在而不出现 nullpointerException?

java - 从 BufferedReader (request.getInputStream()) 和 request.getParameter 读取 servlet 上的 jsp 数据的区别

python - Elasticsearch 条件

php - Elasticsearch 匹配 php 中的子字符串

java - MongoDB Java : how to get write error document?

java - 将命令行输出写入文本文件

elasticsearch - 根据不同文档中同一字段的不同值进行过滤

sql - 为什么在 SSIS 插入期间我的触发器没有触发?