Модули индексов
Модули индексов — это модули, созданные для каждого индекса и контролирующие все аспекты, связанные с индексом.
Настройки индекса
Настройки уровня индекса могут быть установлены для каждого индекса. Настройки могут быть:
- статические
- Они могут быть установлены только при создании индекса или на закрытом индексе, или с помощью API update-index-settings с параметром запроса
reopen, установленным в значениеtrue(что автоматически закрывает и вновь открывает затронутые индексы). - динамические
- Они могут быть изменены на активном индексе с помощью API update-index-settings.
Вы можете изменить любые задокументированные настройки индекса на закрытых индексах. Однако изменение незадокументированных настроек индекса на закрытых индексах не поддерживается и может привести к ошибкам.
Статические настройки индекса
Ниже приведен список всех статических настроек индекса, которые не связаны с каким-либо конкретным модулем индекса:
-
index.number_of_shards -
Количество первичных фрагментов, которое должен иметь индекс. По умолчанию значение равно
1. Эта настройка может быть установлена только при создании индекса. Ее нельзя изменить на закрытом индексе.Количество фрагментов ограничено значением
1024на индекс. Это ограничение является пределом безопасности, чтобы предотвратить случайное создание индексов, которые могут дестабилизировать кластер из-за распределения ресурсов. Предел может быть изменён путём указания системной переменнойexport ES_JAVA_OPTS="-Des.index.max_number_of_shards=128"на каждом узле, входящем в состав кластера.
-
index.number_of_routing_shards -
Целочисленное значение, используемое с
index.number_of_shardsдля маршрутизации документов к первичному фрагменту. См._routingполе.Elasticsearch использует это значение при разделении индекса. Например, индекс с 5 фрагментами и значением
number_of_routing_shards, установленным в30(5 x 2 x 3), может быть разделён на факторы2или3. Другими словами, он может быть разделён следующим образом:-
5→10→30(разделение на 2, затем на 3) -
5→15→30(разделение на 3, затем на 2) -
5→30(разделение на 6)
Значение по умолчанию для этой настройки зависит от количества первичных фрагментов в индексе. Значение по умолчанию разработано для того, чтобы позволить разделение на множители 2 до максимального значения в 1024 фрагмента.
В Elasticsearch 7.0.0 и более поздних версиях эта настройка влияет на то, как документы распределяются по фрагментам. При повторной индексации более старого индекса с пользовательской маршрутизацией необходимо явно установить
index.number_of_routing_shardsдля сохранения того же распределения документов. См. соответствующую информацию о разрыве совместимости. -
-
index.codec - Значение
defaultсжимает хранимые данные с помощью сжатия LZ4, но может быть установлено в значениеbest_compression, которое использует ZSTD для более высокого коэффициента сжатия за счет более медленной производительности чтения хранимых полей. Если вы обновляете тип сжатия, новое значение будет применено после слияния сегментов. Слияние сегментов можно принудительно выполнить, используя force merge. Эксперименты с индексированием наборов данных журналов показали, что использованиеbest_compressionобеспечивает до ~28% меньшее использование памяти и аналогичную скорость индексирования (иногда немного медленнее или быстрее в зависимости от других используемых параметров) по сравнению сdefault, при этом задержка get по id находится в диапазоне от ~10% до ~33%. Более высокая задержка get по id не является проблемой для многих случаев использования, таких как журналы или метрики, так как они не сильно зависят от функции get по id (API Get или поиск по _id). -
index.mode -
Настройка
index.modeиспользуется для управления настройками, применяемыми в определенных областях, таких как загрузка данных временных рядов или журналов. Существуют различные взаимоисключающие режимы, которые используются для применения настроек или значений по умолчанию, контролирующих индексирование документов, сортировку и другие параметры, значения которых влияют на производительность индексирования или запросов.resp = client.indices.create( index="my-index-000001", settings={ "index": { "mode": "standard" } }, ) print(resp)const response = await client.indices.create({ index: "my-index-000001", settings: { index: { mode: "standard", }, }, }); console.log(response);PUT my-index-000001 { "settings": { "index":{ "mode":"standard" } } }Этот индекс использует режим индекса
standardРежим индекса поддерживает следующие значения:
-
null - Значение по умолчанию (то же, что и
standard). -
standard - Стандартная индексация с настройками по умолчанию.
-
time_series - (только потоки данных) Режим индекса, оптимизированный для хранения метрик. Дополнительную информацию см. в Настройках индекса временных рядов.
-
logsdb - (только потоки данных) Режим индекса, оптимизированный для журналов.
-
-
index.routing_partition_size - Количество фрагментов, на которые может быть направлено пользовательское значение маршрутизации маршрутизации. По умолчанию равно 1 и может быть установлено только при создании индекса. Это значение должно быть меньше, чем
index.number_of_routing_shards, если значениеindex.number_of_routing_shardsтакже равно 1. Подробности о том, как используется эта настройка, см. в разделе Маршрутизация к разделу индекса.
-
index.soft_deletes.enabled - [7.6.0] Устарело в версии 7.6.0. Создание индексов с отключёнными мягкими удалениями устарело и будет удалено в будущих версиях Elasticsearch. Указывает, включены ли мягкие удаления для индекса. Мягкие удаления могут быть настроены только при создании индекса и только для индексов, созданных в Elasticsearch 6.5.0 или более поздней версии. По умолчанию значение равно
true.
-
index.soft_deletes.retention_lease.period - Максимальный период хранения истории фрагментов перед тем, как аренда истории хранения фрагментов считается просроченной. Аренды истории хранения фрагментов гарантируют, что мягкие удаления сохраняются во время слияний в индексе Lucene. Если мягкое удаление сливается до того, как оно может быть реплицировано на ведомого, следующий процесс завершится неудачей из-за неполной истории на лидере. По умолчанию значение равно
12h. -
index.load_fixed_bitset_filters_eagerly - Указывает, загружены ли предварительно кэшированные фильтры для вложенных запросов. Возможные значения —
true(по умолчанию) иfalse. -
index.shard.check_on_startup -
Только для опытных пользователей. Эта настройка включает некоторые очень дорогостоящие операции при запуске фрагмента и полезна только при диагностике проблем в вашем кластере. Если вы её используете, сделайте это только временно и удалите её, когда она больше не потребуется.
Elasticsearch автоматически выполняет проверки целостности содержимого фрагментов в различные моменты их жизненного цикла. Например, он проверяет контрольную сумму каждого файла, передаваемого при восстановлении реплики или создании снимка. Он также проверяет целостность многих важных файлов при открытии фрагмента, что происходит при запуске узла и завершении восстановления или перемещения фрагмента. Поэтому вы можете вручную проверить целостность всего фрагмента во время его работы, сделав снимок его в новый репозиторий или восстановив его на новый узел.
Эта настройка определяет, будет ли Elasticsearch выполнять дополнительные проверки целостности при открытии фрагмента. Если эти проверки обнаружат повреждение, они помешают открытию фрагмента. Она принимает следующие значения:
-
false - Не выполнять дополнительные проверки на наличие повреждений при открытии фрагмента. Это значение по умолчанию и рекомендуемое поведение.
-
checksum - Проверить, что контрольная сумма каждого файла в фрагменте соответствует его содержимому. Это позволит обнаружить случаи, когда данные, считанные с диска, отличаются от данных, которые Elasticsearch изначально записал, например, из-за необнаруженного повреждения диска или других отказов оборудования. Эти проверки требуют считывания всего фрагмента с диска, что занимает значительное время и пропускную способность ввода-вывода, и может повлиять на производительность кластера, удаляя важные данные из кэша вашей файловой системы.
-
true - Выполняет те же проверки, что и
checksum, а также проверяет логические несоответствия в фрагменте, которые могут быть вызваны, например, повреждением данных во время записи из-за неисправной оперативной памяти или других отказов оборудования. Эти проверки требуют считывания всего фрагмента с диска, что занимает значительное время и пропускную способность ввода-вывода, а затем выполнения различных проверок содержимого фрагмента, что занимает значительное время, ЦП и память.
-
Динамические настройки индекса
Ниже представлен список всех динамических настроек индекса, которые не связаны с каким-либо модулем индекса:
-
index.number_of_replicas -
Количество реплик для каждого первичного фрагмента. По умолчанию 1.
WARNING: Configuring it to 0 may lead to temporary availability loss during node restarts or permanent data loss in case of data corruption.
-
index.auto_expand_replicas -
Автоматическое расширение количества реплик на основе количества узлов данных в кластере. Установите значение в формате нижняя и верхняя граница, разделенные дефисом (например,
0-5) или используйтеallдля верхней границы (например,0-all). По умолчаниюfalse(т.е. отключено). Обратите внимание, что автоматически расширенное количество реплик учитывает только правила фильтрации распределения фильтрации распределения фрагментов, но игнорирует другие правила распределения, такие как общее количество фрагментов на узел, и это может привести к состоянию здоровья кластераYELLOW, если применимые правила не позволяют распределить все реплики.Если верхняя граница —
all, то осознание распределения фрагментов иcluster.routing.allocation.same_shard.hostигнорируются для данного индекса.
-
index.search.idle.after - Сколько времени фрагмент может не получать запросы поиска или получения, прежде чем он будет считаться неактивным для поиска. (по умолчанию
30s)
-
index.refresh_interval - Как часто выполнять операцию обновления, чтобы свежие изменения в индексе были видимы для поиска. По умолчанию
1s. Можно установить значение-1, чтобы отключить обновление. Если эта настройка не указана явно, фрагменты, не получившие запросов поиска в течение как минимумindex.search.idle.afterсекунд, не будут получать фоновые обновления, пока не получат запрос поиска. Поисковые запросы, которые попадают на неактивный фрагмент, где запланировано обновление, вызовут обновление только для этого фрагмента в рамках операции поиска. Это поведение призвано автоматически оптимизировать массовое индексирование по умолчанию, когда не выполняются поиски. Чтобы отказаться от этого поведения, нужно установить явное значение1sв качестве интервала обновления.
-
index.max_result_window - Максимальное значение
from + sizeдля запросов поиска в этом индексе. По умолчанию10000. Запросы поиска потребляют оперативную память и время, пропорциональноfrom + size, и это ограничение памяти. См. Скролл или Search After для более эффективной альтернативы увеличению этого значения. -
index.max_inner_result_window - Максимальное значение
from + sizeдля определения вложенных результатов и агрегаций top hits в этом индексе. По умолчанию100. Вложенные результаты и агрегации top hits потребляют оперативную память и время, пропорциональноfrom + size, и это ограничение памяти. -
index.max_rescore_window - Максимальное значение
window_sizeдля запросовrescoreв запросах поиска для этого индекса. По умолчаниюindex.max_result_window, которое по умолчанию равно10000. Запросы поиска потребляют оперативную память и время, пропорциональноmax(window_size, from + size), и это ограничение памяти. -
index.max_docvalue_fields_search - Максимальное количество
docvalue_fields, разрешенных в запросе. По умолчанию100. Поле doc-значений является дорогостоящим, так как может потребовать поиск по каждому полю для каждого документа. -
index.max_script_fields - Максимальное количество
script_fields, разрешенных в запросе. По умолчанию32.
-
index.max_ngram_diff - Максимальное допустимое различие между min_gram и max_gram для NGramTokenizer и NGramTokenFilter. По умолчанию
1.
-
index.max_shingle_diff - Максимальное допустимое различие между max_shingle_size и min_shingle_size для
shingleфильтра токенов. По умолчанию3. -
index.max_refresh_listeners - Максимальное количество слушателей обновления, доступных на каждом фрагменте индекса. Эти слушатели используются для реализации
refresh=wait_for. -
index.analyze.max_token_count - Максимальное количество токенов, которые могут быть получены с помощью API _analyze. По умолчанию
10000.
-
index.highlight.max_analyzed_offset - Максимальное количество символов, которые будут проанализированы для запроса выделения. Эта настройка применима только в случае запроса выделения текста, который был индексирован без смещений или векторов терминов. По умолчанию
1000000.
-
index.max_terms_count - Максимальное количество терминов, которые могут быть использованы в запросе Terms Query. По умолчанию
65536.
-
index.max_regex_length - Максимальная длина значения, которое может быть использовано в запросе
regexpилиprefix. По умолчанию1000.
-
index.query.default_field -
(строка или массив строк) Шаблоны подстановок (
*) для соответствия одному или нескольким полям. По умолчанию эти типы запросов ищут соответствующие поля:По умолчанию
*, что соответствует всем полям, подходящим для запросов на уровне терминов, за исключением метаданных.
-
index.routing.allocation.enable -
Управляет распределением фрагментов для данного индекса. Может быть установлено:
-
all(по умолчанию) — Разрешает распределение фрагментов для всех фрагментов. -
primaries— Разрешает распределение фрагментов только для первичных фрагментов. -
new_primaries— Разрешает распределение фрагментов только для вновь созданных первичных фрагментов. -
none— Распределение фрагментов запрещено.
-
-
index.routing.rebalance.enable -
Включает перебалансировку фрагментов для этого индекса. Может быть установлено:
-
all(по умолчанию) — Разрешает перебалансировку фрагментов для всех фрагментов. -
primaries— Разрешает перебалансировку фрагментов только для первичных фрагментов. -
replicas— Разрешает перебалансировку фрагментов только для реплицированных фрагментов. -
none— Перебалансировка фрагментов запрещена.
-
-
index.gc_deletes - Продолжительность времени, в течение которого номер версии удаленного документа остается доступным для дальнейших версионных операций. По умолчанию
60s.
-
index.default_pipeline - Умолчательный пайплайн обработки данных для индекса. Запросы к индексу завершатся ошибкой, если указан пайплайн по умолчанию, но пайплайн не существует. Умолчание может быть переопределено с помощью параметра
pipeline. Специальное имя пайплайна_noneуказывает на отсутствие пайплайна обработки данных по умолчанию.
-
index.final_pipeline -
Конечный пайплайн обработки данных для индекса. Запросы индексирования завершатся ошибкой, если указан конечный пайплайн, но пайплайн не существует. Конечный пайплайн всегда выполняется после запрошенного пайплайна (если он указан) и пайплайна по умолчанию (если он существует). Специальное имя пайплайна
_noneуказывает на отсутствие конечного пайплайна обработки данных.Вы не можете использовать конечный пайплайн для изменения поля
_index. Если пайплайн пытается изменить поле_index, запрос индексирования завершится ошибкой. -
index.hidden - Указывает, должен ли индекс по умолчанию быть скрытым. Скрытые индексы по умолчанию не возвращаются при использовании шаблона подстановки. Это поведение контролируется для каждого запроса с помощью параметра
expand_wildcards. Возможные значения —trueиfalse(по умолчанию).
Настройки в других модулях индекса
Другие настройки индекса доступны в модулях индекса:
- Анализ
- Настройки для определения анализаторов, токенизаторов, фильтров токенов и фильтров символов.
- Распределение фрагментов индекса
- Управление тем, где, когда и как фрагменты распределяются по узлам.
- Маппинг
- Включить или отключить динамическое создание маппинга для индекса.
- Слияние
- Управление тем, как фрагменты сливаются фоновым процессом слияния.
- Схожести
- Настройка пользовательских параметров схожести для настройки способа ранжирования результатов поиска.
- Медленный журнал
- Управление тем, как регистрируются медленные запросы и запросы извлечения.
- Хранилище
- Настройка типа файловой системы, используемой для доступа к данным фрагментов.
- Транзакционный журнал
- Управление транзакционным журналом и фоновыми операциями сброса.
- Сохранение истории
- Управление сохранением истории операций в индексе.
- Нагрузка индексирования
- Настройка ограничений по нагрузке индексирования.
Настройки индекса X-Pack
- Управление жизненным циклом индексов
- Укажите политику жизненного цикла и псевдоним переключения для индекса.
© 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/index-modules.html