java - 将 ES 的 UpdateByQueryRequestBuilder 与 Rest High Level Client 结合使用

标签 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); 

或者应该有其他方法来做到这一点?谢谢

最佳答案

来自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/

相关文章:

java - 提交响应后无法转发 Servlet 错误

java - 使用递归检查整数的位数是否为偶数

java - 外部 jar 中的资源加载不起作用

solr - 包含多个单词的elasticsearch短语频率.tf()

symfony - 如何创建从 Elastic 结果到 Doctrine 实体的自定义转换器

java - Tika 1.14 : getting java. PDFTextStripper 的 lang.NullPointerException

java - 使java输出特定数量的字符,具体取决于控制台中的输入

spring - 通过 Spring Data ElasticSearch 将 Spring Data JPA 条目批量索引到 Elastic

java - Java 中的 Elastic 搜索查询 : Contains-String query?

elasticsearch - Elasticsearch 5中的词云