Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17]

Модули индексов

Модули индексов — это модули, созданные для каждого индекса и контролирующие все аспекты, связанные с индексом.

Настройки индекса

Настройки уровня индекса могут быть установлены для каждого индекса. Настройки могут быть:

статические
Они могут быть установлены только при создании индекса или на закрытом индексе, или с помощью 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API