0

У меня есть вопрос относительно последней версии Elasticsearch.Elasticsearch 5.x setQuery устарел

До предыдущей версии я использовал следующий запрос JAVA API:

SearchRequestBuilder request = client.prepareSearch(index).setSource(jsonQuery) 

Теперь setSource является устаревшим и рекомендуется использовать SetQuery (QueryBuilder) вместо этого.

Мой вопрос следующий: можно ли передать весь запрос json, как и раньше?

Благодаря передовой

[Редактировать]

Это синтаксис запроса я использую, и я хотел бы сохранить, если это возможно:

"{" 
+ "\"query\": {" 
+ " \"bool\": {" 
+ "  \"filter\": { ... }" 
+ "  }" 
+ " }," 
+ " \"fields\": [" 
+ " \"xxx\"," 
+ " ]," 
+ " \"size\": 1000" 
+ "}"; 

Я не хочу, чтобы разделить тела, полей и размеров, используя:

setQuery(QueryBuilders.wrapperQuery(jsonQuery)).setSize(size).storedFields(fields) 

ответ

0

Да, вы можете использовать QueryBuilders.wrapperQuery(), который создаст экземпляр WrapperQueryBuilder для достижения этой цели:

SearchRequestBuilder request = client.prepareSearch(index) 
    .setQuery(QueryBuilders.wrapperQuery(jsonQuery)) 
    .setSize(1000) 
    .fields("xxx1", "xxx2"); 
+0

Благодарим за ответ Val. Я уже пробовал эту реализацию, но таким образом я не могу включить сохраненные поля из jsonQuery, так как я определяю тело. – Ribas

+0

Не уверен, что я понимаю, вы можете уточнить? Обновите свой вопрос с помощью запроса, который вы делали ранее, и что не будет работать с этим решением. – Val

+0

Пожалуйста, обновите свой вопрос и отформатируйте свой код, он будет более разборчивым и легче вам помочь. – Val