在java客户端中使用updatebyqueryrequest

mzmfm0qo  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(413)

我正在尝试使用 UpdateByQueryRequest 在java中。问题是,我收到了不同的语法建议 eclipse . 我正在使用 java RestHighLevelClient . 这里有一个例子

import org.elasticsearch.index.reindex.UpdateByQueryRequest;
SearchRequest searchRequest = new SearchRequest(index).types(type);

我得到了两条建议。第一个没有 SearchRequest 对象,第二个是 SearchRequest 对象

UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest();
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(searchRequest);

我无法使用 setQuery 就像在欧洲其他地方一样。另一方面 setScript 作品

updateByQueryRequest.setQuery()

是否有其他语法可以执行此操作?

cbwuti44

cbwuti441#

您还可以使用setquery()的内部实现:

public UpdateByQueryRequest setQuery(QueryBuilder query) {
  if (query != null) {
    this.getSearchRequest().source().query(query);
  }

  return this;
}

您的最终代码如下所示:

UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(searchRequest);
if (query != null) {
   updateByQueryRequest.getSearchRequest().source().query(query);
}

如果您无权访问updatebyqueryrequest.getsearchrequest(),可能问题出在库或ide中,您可以尝试反编译该类并检查该方法是否存在(elasticsearch是开源的,因此不可能存在法律问题),此外,我建议您上传库或再次下载,并检查问题是否仍然存在。

相关问题