Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Elasticsearch Java高级客户端6.8的响应中仅获取失败的文档_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Bulkinsert_Resthighlevelclient_Elasticsearch Rest Client - Fatal编程技术网 elasticsearch,bulkinsert,resthighlevelclient,elasticsearch-rest-client,Java,elasticsearch,Bulkinsert,Resthighlevelclient,Elasticsearch Rest Client" /> elasticsearch,bulkinsert,resthighlevelclient,elasticsearch-rest-client,Java,elasticsearch,Bulkinsert,Resthighlevelclient,Elasticsearch Rest Client" />

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

如何在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) {

在使用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,这将是一个非常有用的功能

您可以查看一下,发现主分支中也没有此类功能


您还可以向Elasticsearch创建问题。

同意。Doc说“要仅返回有关失败操作的信息,请使用
filter\u path
query参数,参数为
items.*.error.
”,但这仅适用于REST API,因为此filter\u path选项未在REST客户端中公开。另请参见@dadoonet wow,很高兴听到Elastic的开发者布道者的消息:)并感谢您为一个现有问题提供了链接,了解了为什么它没有实现,并且非常有用。我只是在这个问题上添加了我的想法:)@dadoonet您增加了很多清晰度。这已经是相当长的一段时间了,如果你能投票并接受对你有用的答案,如果你需要更多信息,请告诉我,那将是非常棒的。