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

mR_*_*r0g 5 java elasticsearch

Elasticsearch 版本 5.6

我正在使用 elasticsearch 本机传输客户端并通过查询UpdateByQueryRequestBuilder执行更新。

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

小智 -1

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

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

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

仅当缺少依赖项时,才尝试导入此 Maven 依赖项:

    <dependency>
    <groupId>org.elasticsearch.module</groupId>
    <artifactId>reindex</artifactId>
    <version>x.x.x</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

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

clientBuilder.addPlugin(ReindexPlugin.class);
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到更多信息