Elasticsearch setsize () для извлечения всех записей без использования прокрутки API - PullRequest
0 голосов
/ 01 октября 2018

Я новичок в ElasticSearch, и мой сценарий похож на что-то вроде: есть индекс, содержащий около 100 документов.Я использую следующий фрагмент для извлечения этих

ListenableActionFuture f = esClient.prepareSearch (index) .setTypes (type) .setSearchType (SearchType.DFS_QUERY_THEN_FETCH) .setQuery (multiMatchQuery) .execute (); * 10031004 * Я хочу получить все документы за один раз без использования прокрутки.Я знаю, что у индекса не будет так много записей.Если я укажу

ListenableActionFuture f = esClient.prepareSearch (index) .setTypes (type) .setSearchType (SearchType.DFS_QUERY_THEN_FETCH) .setQuery (multiMatchQuery) .setSize (100) .execute ();поведение противоречивоКоличество извлекаемых записей меняется каждый раз, иногда 34 документа, иногда 21 и т. Д.

Но если я не укажу размер, выборка будет 10 всегда.Я используюasticsearch 5.6.3.

Я пробовал несколько решений, таких как использование без типа поиска, как показано ниже, но не повезло

ListenableActionFuture f = esClient.prepareSearch (index) .setTypes (type) .setQuery (multiMatchQuery) .setSize (hitcount) .execute ();

Мне нужен запрос для извлечения всех записей за один раз.Когда я пытался напечатать поисковый ответ, я обнаружил, что общее число совпадений неверно, как показано ниже:

попадания ": {" всего ": 25," max_score ": 0.18232156," попадания ": [{....}}}Должно быть 100. Опять же, если я выполню один и тот же код, я получу разные общие хиты.

Мой индекс содержит 5 осколков

Мне интересно, почему я получаю непоследовательные общие хитычасто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...