Общие рекомендации
Не возвращайте большие наборы результатов
Elasticsearch разработан как поисковая система, что делает его очень эффективным в получении верхних документов, соответствующих запросу. Однако он не так хорош для задач, относящихся к области баз данных, таких как извлечение всех документов, соответствующих определённому запросу. Если вам нужно это сделать, обязательно используйте API Скролла.
Избегайте больших документов
Учитывая, что значение по умолчанию для http.max_content_length установлено в 100 МБ, Elasticsearch откажется от индексирования любого документа, превышающего этот размер. Вы можете увеличить это значение, но у Lucene всё равно есть ограничение около 2 ГБ.
Даже без учёта жёстких ограничений, большие документы обычно непрактичны. Большие документы создают больше нагрузки на сеть, использование памяти и диск, даже для запросов поиска, которые не требуют _source, поскольку Elasticsearch необходимо получить _id документа во всех случаях, а стоимость получения этого поля выше для больших документов из-за работы кэша файловой системы. Индексация этого документа может использовать количество памяти, являющееся множителем исходного размера документа. Поиск по близости (например, запросы с фразами) и выделение ключевых слов также становятся более затратными, поскольку их стоимость напрямую зависит от размера исходного документа.
Иногда полезно пересмотреть, каким должен быть блок информации. Например, тот факт, что вы хотите сделать книги поисковыми, не обязательно означает, что документ должен состоять из целой книги. Возможно, лучше использовать главы или даже абзацы как документы, а затем иметь свойство в этих документах, определяющее, к какой книге они относятся. Это не только избегает проблем с большими документами, но также улучшает пользовательский опыт поиска. Например, если пользователь ищет два слова foo и bar, совпадение между разными главами, вероятно, будет очень низким, в то время как совпадение в одном абзаце, скорее всего, будет хорошим.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/general-recommendations.html