Применяется ли сортировка Elasticsearch после или до анализа индекса (сканирования)? - PullRequest
0 голосов
/ 10 декабря 2018

Я использую Elasticsearch 6.2, и у меня есть несколько запросов, которые анализируют огромное количество документов.Я сортирую по одному полю внутри индекса.Elasticsearch проверяет 10.000 документов (значение конфигурации по умолчанию) и затем возвращает их в разбивке на страницы.

Я попытался прочитать документацию, но не могу найти никакой информации, если база данных применяет сортировку до или после процесса анализа документов изиндекс.

Другими словами, сортировка применяется непосредственно во время анализа индекса, или документы сортируются после анализа?Если последний вариант верен, какой тип сортировки применяет Elasticsearch во время сканирования?

Большое спасибо.

1 Ответ

0 голосов
/ 18 декабря 2018

Сортировка, агрегирование и доступ к значениям полей в сценариях требует другого шаблона доступа к данным.Вместо того, чтобы искать термин и находить документы, нам нужно иметь возможность искать документ и находить в нем термины, которые он содержит.

Эта цитата из справочной документации Elasticsearch подразумевает для меняэта сортировка происходит на неанализированном уровне, но я также решил перепроверить и провести несколько тестов на ней.

В Elasticsearch у нас есть возможность выполнять сортировку по неанализированным полям - например, ключевое слово .В этих полях для сортировки используются значения doc, и после теста я могу сказать, что использует предварительно проанализированные значения для сортировки по кодам, представляющим символы (цифры, прописные буквы, строчные буквы)

Также возможно выполнить сортировку по текстовым полям с некоторыми оговорками и настройками (например, необходимо включить fielddata , поскольку текстовые поля не поддерживают doc_values ​​)

В этом случае документы сортируются в соответствии с проанализированными значениями .Конечно, многое зависит от анализа конвейера, так как он может делать разные вещи с текстом.Также, как напоминание:

Fielddata может занимать много места в куче, особенно при загрузке текстовых полей с большим количеством элементов.После того, как полевые данные были загружены в кучу, они остаются там на время жизни сегмента.Кроме того, загрузка полевых данных является дорогостоящим процессом, из-за которого пользователи могут столкнуться с задержками.Вот почему полевые данные по умолчанию отключены.

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