有什么方法可以使用Elasticsearch Java High-Level REST Client在批量请求时在响应中仅获取失败的文档。

当前,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(),代表在批量操作中执行的每个 Action (顺序相同!)。

最佳答案

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

您可以看一下complete BulkResponse,看看自己在master分支中也没有这种功能。

另外here您可以为Elasticsearch创建问题。

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

10-11 08:50