Elasticsearch 5.6版
我正在使用elasticsearch本机传输客户端和UpdateByQueryRequestBuilder
来执行update by query。
我想异步执行此操作并跟踪任务api的进度。文档显示参数wait_for_completion = false正是我想要的,因为我看不到对java客户端的支持。有没有办法设置这个并获取任务ID?
答案 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.