Elasticsearch 5.x setQuery устарел

У меня вопрос относительно последней версии Elasticsearch.

До предыдущей версии я использовал следующий поиск 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)

person Ribas    schedule 17.11.2016    source источник


Ответы (1)


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

SearchRequestBuilder request = client.prepareSearch(index)
    .setQuery(QueryBuilders.wrapperQuery(jsonQuery))
    .setSize(1000)
    .fields("xxx1", "xxx2");
person Val    schedule 17.11.2016
comment
Спасибо за ответ Вал. Я уже пробовал эту реализацию, но таким образом я не могу включить сохраненные поля из jsonQuery, так как я определяю тело. - person Ribas; 17.11.2016
comment
Не совсем понял, можно поподробнее? Обновите свой вопрос запросом, который вы делали ранее, и тем, что не будет работать с этим решением. - person Val; 17.11.2016
comment
Пожалуйста, обновите свой вопрос и отформатируйте свой код, он будет более разборчивым и вам будет легче помочь. - person Val; 17.11.2016
comment
Действительно, вам нужно указать fields и size по-разному, непосредственно в объекте запроса. - person Val; 17.11.2016
comment
Я надеялся, что все еще есть способ объявить весь запрос из строки. В любом случае спасибо за помощь - person Ribas; 17.11.2016