如何在Elasticsearch Java高级客户端6.8的响应中仅获取失败的文档
在使用Elasticsearch Java高级REST客户端进行批量请求时,是否有任何方法可以在响应中仅获取失败的文档 目前,ES正在发送响应中所有成功和失败的文档,我们正在重新处理所有失败的文档,我们正在迭代如何在Elasticsearch Java高级客户端6.8的响应中仅获取失败的文档,java,
elasticsearch,bulkinsert,resthighlevelclient,elasticsearch-rest-client,Java,
elasticsearch,Bulkinsert,Resthighlevelclient,Elasticsearch Rest Client,在使用Elasticsearch Java高级REST客户端进行批量请求时,是否有任何方法可以在响应中仅获取失败的文档 目前,ES正在发送响应中所有成功和失败的文档,我们正在重新处理所有失败的文档,我们正在迭代BulkItemResponse以查找失败的文档并重新处理它 private BulkRequest createBulkRequestsForRetry(BulkResponse bulkItemResponses, BulkRequest currentBulkRequest) {
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,这将是一个非常有用的功能
您可以查看一下,发现主分支中也没有此类功能
您还可以向Elasticsearch创建问题。同意。Doc说“要仅返回有关失败操作的信息,请使用
filter\u path
query参数,参数为items.*.error.
”,但这仅适用于REST API,因为此filter\u path选项未在REST客户端中公开。另请参见@dadoonet wow,很高兴听到Elastic的开发者布道者的消息:)并感谢您为一个现有问题提供了链接,了解了为什么它没有实现,并且非常有用。我只是在这个问题上添加了我的想法:)@dadoonet您增加了很多清晰度。这已经是相当长的一段时间了,如果你能投票并接受对你有用的答案,如果你需要更多信息,请告诉我,那将是非常棒的。