Как повысить производительность поиска в OpenSearch

14 советов по снижению задержки поиска в OpenSearch и оптимизации производительности поиска.

Параметр size

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

Шарды и реплики

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

Удаленные документы

Наличие большого количества удаленных документов в индексе OpenSearch также приводит к проблемам с производительностью поиска. Для удаления большого количества удаленных документов и оптимизации работы шардов можно использовать API принудительного слияния.

Фильтры поиска

Эффективное использование фильтров в запросах OpenSearch может значительно повысить производительность поиска, так как условия фильтрации 1) кэшируются и 2) позволяют сократить количество целевых документов для поиска в условии запроса.

Запросы с подстановочными знаками

Избегайте подстановочных символов, особенно ведущих, которые приводят к сканированию всего индекса OpenSearch.

Regex и parent-child

Обратите внимание на то, что Regex-запросы могут вызывать задержки при поиске.

Реализация функций

Существует несколько способов реализовать определенную функцию в OpenSearch. Например, автозаполнение может быть реализовано в различных стилях.

Множество мелких шардов

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

Тяжелые агрегации

Избегайте тяжелых агрегаций, включающих уникальные идентификаторы.

Таймаут и завершение

Таймаут параметра и завершение после параметра могут быть полезны при выполнении тяжелых поисковых запросов или при большом объеме данных результатов.

Шаблоны поиска

Использование шаблонов поиска позволяет добиться лучшей абстракции, то есть не раскрывать синтаксис запроса пользователям. Шаблоны поиска также позволяют передавать меньше данных по сети, что особенно полезно при больших объемах запросов OpenSearch.

API мультипоиска

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

Термические запросы

Терминовые запросы используются в тех случаях, когда необходимо точное совпадение и по ключевым словам. По умолчанию OpenSearch генерирует текстовые поля и поля ключевых слов для каждого поля, состоящего из строкового значения, если не задан явный маппинг. Пользователи склонны использовать запрос соответствия даже для таких типов данных с ключевыми словами, как product-ids, что связано с большими затратами, поскольку запрос соответствия проходит через операцию анализа. Для повышения производительности всегда используйте запрос по термину для типов данных с ключевыми словами и везде, где требуется точный поиск.

Фильтрация по источнику

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий