Модули индексов
Модули индексов — это модули, создаваемые для каждого индекса и управляющие всеми аспектами, связанными с этим индексом.
Настройки индекса
Настройки уровня индекса могут быть установлены для каждого индекса. Настройки могут быть:
- статические
- Их можно задать только при создании индекса или на закрытом индексе.
- динамические
- Их можно изменить на живом индексе, используя API обновления настроек индекса.
Изменение статических или динамических настроек индекса на закрытом индексе может привести к некорректным настройкам, которые невозможно исправить без удаления и повторного создания индекса.
Статические настройки индекса
Ниже приведен список всех статических настроек индекса, которые не связаны с каким-либо конкретным модулем индекса:
-
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, что использует DEFLATE для более высокого коэффициента сжатия, но за счет более медленной производительности хранимых полей. Если вы обновляете тип сжатия, новый тип будет применен после слияния сегментов. Слияние сегментов можно принудительно выполнить с помощью force merge. -
index.routing_partition_size - Количество фрагментов, куда может попасть значение настраиваемого параметра маршрутизации. По умолчанию равно 1 и может быть установлено только при создании индекса. Это значение должно быть меньше, чем
index.number_of_shards, если значениеindex.number_of_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.
-
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). Это поведение направлено на автоматическое оптимизацию массового индексирования в случае по умолчанию, когда не выполняются никакие поиски. Для отказа от этого поведения необходимо явно установить значение1sв качестве интервала обновления.
-
index.max_result_window - Максимальное значение
from + sizeдля поисков в этом индексе. По умолчанию установлено значение10000. Запросы поиска занимают оперативную память и время, пропорциональноfrom + size, и это ограничивает эту память. См. Прокрутка или Поиск после для более эффективной альтернативы увеличению этого значения. -
index.max_inner_result_window - Максимальное значение
from + sizeдля определения внутренних совпадений и агрегаций верхних результатов для этого индекса. По умолчанию установлено значение100. Внутренние совпадения и агрегация верхних результатов занимают оперативную память и время, пропорционально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-values является дорогостоящим, поскольку может потребовать поиск по каждому полю каждого документа. -
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 Query. По умолчанию установлено значение
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/7.17/index-modules.html