Elasticsearch java客户端通过查询更新,等待完成

时间:2018-03-15 19:39:59

标签: java elasticsearch

Elasticsearch 5.6版

我正在使用elasticsearch本机传输客户端和UpdateByQueryRequestBuilder来执行update by query

我想异步执行此操作并跟踪任务api的进度。文档显示参数wait_for_completion = false正是我想要的,因为我看不到对java客户端的支持。有没有办法设置这个并获取任务ID?

1 个答案:

答案 0 :(得分:0)

使用本机传输客户端检索任务api响应,您必须执行以下请求:

UpdateByQueryRequestBuilder u = UpdateByQueryAction.INSTANCE.newRequestBuilder(client);
BulkIndexByScrollResponse r = u.source("source").filter(matchQuery("field", "value")).get();

响应有两个失败列表和状态成员,您可以使用获取计数。状态与您从任务管理API获得的状态完全相同。

仅在您缺少依赖项的情况下,尝试导入此maven依赖项:

    <dependency>
    <groupId>org.elasticsearch.module</groupId>
    <artifactId>reindex</artifactId>
    <version>x.x.x</version>
    </dependency>

在客户端设置中添加调用:

clientBuilder.addPlugin(ReindexPlugin.class);

您可以找到其他信息here.