在使用 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()
批量操作中执行的每个操作(以相同的顺序!)。