有什么方法可以使用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/