Использование UpdateByQueryRequest в java-клиенте
Я пытаюсь использовать
UpdateByQueryRequest
в java. Проблема в том, что я получаю другое предложение синтаксиса в
eclipse
. я использую
java RestHighLevelClient
. Вот пример
import org.elasticsearch.index.reindex.UpdateByQueryRequest;
SearchRequest searchRequest = new SearchRequest(index).types(type);
Я получаю 2 предложения. Первый без объекта, а второй с
SearchRequest
объект
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest();
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(searchRequest);
Я не могу использовать
setQuery
как и везде в ES. С другой стороны
setScript
работает
updateByQueryRequest.setQuery()
Есть ли другой синтаксис для этого?
1 ответ
Вы также можете использовать внутреннюю реализацию 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 является открытым исходным кодом, поэтому он не будет возможная юридическая проблема), также я рекомендую вам загрузить библиотеку или загрузить ее снова и проверить, сохраняется ли проблема.