在Elasticsearch v5.5中,我们在定义时使用了Transport Client UpdateByQueryRequestBuilder 并且工作正常:
UpdateByQyeryRequestBuilder updateByQuery = UpdateByQueryAction.INSTANCE
.newRequestBuilder(transportClient);
由于我们升级为使用 RestHighLevelClient,上述构建器不再工作,并且出现错误:“UpdateByQueryAction 类型中的方法 newRequestBuilder(ElasticsearchClient) 不适用于参数 (RestHighLevelClient)”。 有谁知道我是否可以像下面这样简单地转换它:
UpdateByQyeryRequestBuilder updateByQuery = UpdateByQueryAction.INSTANCE
.newRequestBuilder((ElasticsearchClient) restHighLevelClient);
或者应该有其他方法来做到这一点?谢谢
最佳答案
来自the documentation 。看来你应该直接准备请求:
UpdateByQueryRequest request = new UpdateByQueryRequest("source1", "source2");
request.set...
然后执行请求:
BulkByScrollResponse bulkResponse = client.updateByQuery(request, RequestOptions.DEFAULT);
我认为 UpdateByQyeryRequestBuilder
是一个仅特定于 TransportClient 的类。
关于java - 将 ES 的 UpdateByQueryRequestBuilder 与 Rest High Level Client 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54207661/