将ES的UpdateByQueryRequestBuilder与Rest高级客户端一起使用

时间:2019-01-15 22:15:48

标签: java elasticsearch

在Elasticsearch v5.5中,我们在定义时使用了Transport Client UpdateByQueryRequestBuilder,它工作正常:

UpdateByQyeryRequestBuilder updateByQuery = UpdateByQueryAction.INSTANCE
                                                  .newRequestBuilder(transportClient);

由于我们要升级为使用RestHighLevelClient,因此上述生成器不再起作用,并且具有以下错误:“ UpdateByQueryAction类型的newRequestBuilder(ElasticsearchClient)方法不适用于参数(RestHighLevelClient)”。 有谁知道我是否可以像下面这样简单地投射它:

UpdateByQyeryRequestBuilder updateByQuery = UpdateByQueryAction.INSTANCE
                                                      .newRequestBuilder((ElasticsearchClient) restHighLevelClient); 

还是应该有其他方法可以做到?谢谢

1 个答案:

答案 0 :(得分:0)

来自the documentation。看来您应该直接准备请求:

UpdateByQueryRequest request = new UpdateByQueryRequest("source1", "source2");
request.set...

然后执行请求:

BulkByScrollResponse bulkResponse = client.updateByQuery(request, RequestOptions.DEFAULT);

我认为UpdateByQyeryRequestBuilder仅是特定于TransportClient的类。