Elasticsearch - Модули

Elasticsearch состоит из ряда модулей, которые отвечают за его функциональность. Эти модули имеют два типа настроек, а именно:

  • Static Settings- Эти параметры необходимо настроить в файле config (elasticsearch.yml) перед запуском Elasticsearch. Вам необходимо обновить все интересующие узлы в кластере, чтобы отразить изменения этих параметров.

  • Dynamic Settings - Эти настройки можно установить в Live Elasticsearch.

Мы обсудим различные модули Elasticsearch в следующих разделах этой главы.

Маршрутизация на уровне кластера и распределение сегментов

Параметры уровня кластера определяют распределение шардов по разным узлам и перераспределение шардов для ребалансировки кластера. Это следующие параметры для управления выделением сегментов.

Распределение сегментов на уровне кластера

Настройка Возможное значение Описание
cluster.routing.allocation.enable
все Это значение по умолчанию позволяет выделять сегменты для всех видов сегментов.
праймериз Это позволяет выделять сегменты только для основных сегментов.
new_primaries Это позволяет выделять сегменты только для основных сегментов для новых индексов.
никто Это не позволяет выделять осколки.
cluster.routing.allocation .node_concurrent_recoveries Числовое значение (по умолчанию 2) Это ограничивает количество одновременных восстановлений сегментов.
cluster.routing.allocation .node_initial_primaries_recoveries Числовое значение (по умолчанию 4) Это ограничивает количество параллельных начальных первичных восстановлений.
cluster.routing.allocation .same_shard.host Логическое значение (по умолчанию false) Это ограничивает выделение более одной реплики одного и того же шарда на одном физическом узле.
index.recovery.concurrent _streams Числовое значение (по умолчанию 3) Это контролирует количество открытых сетевых потоков на узел во время восстановления шарда из одноранговых шардов.
index.recovery.concurrent _small_file_streams Числовое значение (по умолчанию 2) Это контролирует количество открытых потоков на узел для небольших файлов размером менее 5 МБ во время восстановления осколка.
cluster.routing.rebalance.enable
все Это значение по умолчанию позволяет балансировать для всех видов шардов.
праймериз Это позволяет балансировать сегменты только для основных сегментов.
реплики Это позволяет балансировать осколки только для реплик осколков.
никто Это не допускает какой-либо балансировки сегментов.
cluster.routing.allocation .allow_rebalance
всегда Это значение по умолчанию всегда разрешает перебалансировку.
index_primaries _active Это позволяет перебалансировать, когда все основные шарды в кластере выделены.
Индексы_все_активные Это позволяет перебалансировать, когда все первичные и реплики распределены.
cluster.routing.allocation.cluster _concurrent_rebalance Числовое значение (по умолчанию 2) Это ограничивает количество одновременных балансировок сегментов в кластере.
cluster.routing.allocation .balance.shard Плавающее значение (по умолчанию 0,45f) Это определяет весовой коэффициент для шардов, выделенных на каждом узле.
cluster.routing.allocation .balance.index Плавающее значение (по умолчанию 0.55f) Это определяет соотношение количества шардов на индекс, выделенный на конкретном узле.
cluster.routing.allocation .balance.threshold Неотрицательное значение с плавающей запятой (по умолчанию 1.0f) Это минимальное значение оптимизации операций, которые необходимо выполнить.

Распределение сегментов на диске

Настройка Возможное значение Описание
cluster.routing.allocation.disk.threshold_enabled Логическое значение (по умолчанию true) Это включает и отключает решение о выделении диска.
cluster.routing.allocation.disk.watermark.low Строковое значение (по умолчанию 85%) Это означает максимальное использование диска; после этого ни один другой сегмент не может быть размещен на этом диске.
cluster.routing.allocation.disk.watermark.high Строковое значение (по умолчанию 90%) Это означает максимальное использование во время распределения; если эта точка будет достигнута во время выделения, Elasticsearch разместит этот сегмент на другом диске.
cluster.info.update.interval Строковое значение (по умолчанию 30 секунд) Это интервал между проверками использования диска.
cluster.routing.allocation.disk.include_relocations Логическое значение (по умолчанию true) Это решает, следует ли учитывать выделяемые в данный момент шарды при расчете использования диска.

Открытие

Этот модуль помогает кластеру обнаруживать и поддерживать состояние всех узлов в нем. Состояние кластера изменяется при добавлении или удалении узла. Настройка имени кластера используется для создания логической разницы между разными кластерами. Есть несколько модулей, которые помогут вам использовать API-интерфейсы, предоставляемые поставщиками облачных услуг, и они приведены ниже:

  • Лазурное открытие
  • Открытие EC2
  • Обнаружение вычислительного механизма Google
  • Открытие дзен

Шлюз

Этот модуль поддерживает состояние кластера и данные о сегменте при полном перезапуске кластера. Ниже приведены статические настройки этого модуля -

Настройка Возможное значение Описание
gateway.expected_nodes числовое значение (по умолчанию 0) Количество узлов, которые, как ожидается, будут в кластере для восстановления локальных сегментов.
gateway.expected_master_nodes числовое значение (по умолчанию 0) Ожидаемое количество главных узлов в кластере до начала восстановления.
gateway.expected_data_nodes числовое значение (по умолчанию 0) Ожидаемое количество узлов данных в кластере до начала восстановления.
gateway.recover_after_time Строковое значение (по умолчанию 5 м) Это интервал между проверками использования диска.
cluster.routing.allocation. disk.include_relocations Логическое значение (по умолчанию true)

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

gateway.recover_ after_nodes
gateway.recover_after_master_nodes
gateway.recover_after_data_nodes

HTTP

Этот модуль управляет обменом данными между HTTP-клиентом и API-интерфейсами Elasticsearch. Этот модуль можно отключить, изменив значение http.enabled на false.

Ниже приведены настройки (настроенные в elasticsearch.yml) для управления этим модулем:

S.No Настройка и описание
1

http.port

Это порт для доступа к Elasticsearch, диапазон значений от 9200 до 9300.

2

http.publish_port

Этот порт предназначен для клиентов http, а также полезен в случае брандмауэра.

3

http.bind_host

Это адрес хоста для службы http.

4

http.publish_host

Это адрес хоста для http-клиента.

5

http.max_content_length

Это максимальный размер содержимого в HTTP-запросе. Его значение по умолчанию - 100 МБ.

6

http.max_initial_line_length

Это максимальный размер URL, значение по умолчанию - 4 КБ.

7

http.max_header_size

Это максимальный размер заголовка http, значение по умолчанию - 8 КБ.

8

http.compression

Это включает или отключает поддержку сжатия, а его значение по умолчанию - false.

9

http.pipelinig

Это включает или отключает конвейерную обработку HTTP.

10

http.pipelining.max_events

Это ограничивает количество событий, которые должны быть поставлены в очередь перед закрытием HTTP-запроса.

Индексы

Этот модуль поддерживает настройки, которые устанавливаются глобально для каждого индекса. Следующие настройки в основном связаны с использованием памяти -

Автоматический выключатель

Это используется для предотвращения возникновения ошибки OutOfMemroyError. Этот параметр в основном ограничивает размер кучи JVM. Например, параметр index.breaker.total.limit, который по умолчанию составляет 70% кучи JVM.

Кэш полевых данных

Это используется в основном при агрегировании по полю. Рекомендуется иметь достаточно памяти для ее выделения. Объем памяти, используемый для кэша данных поля, можно контролировать с помощью параметра index.fielddata.cache.size.

Кэш запросов узла

Эта память используется для кэширования результатов запроса. Этот кэш использует политику выселения из числа недавно использованных (LRU). Параметр Indices.queries.cahce.size контролирует размер памяти этого кеша.

Индексирующий буфер

Этот буфер сохраняет вновь созданные документы в индексе и сбрасывает их, когда буфер заполняется. Такие настройки, как index.memory.index_buffer_size, управляют размером кучи, выделенной для этого буфера.

Кэш запроса осколков

Этот кеш используется для хранения данных локального поиска для каждого шарда. Кэш можно включить во время создания индекса или отключить, отправив параметр URL.

Disable cache - ?request_cache = true
Enable cache "index.requests.cache.enable": true

Восстановление индексов

Он контролирует ресурсы в процессе восстановления. Ниже приведены настройки -

Настройка Значение по умолчанию
index.recovery.concurrent_streams 3
index.recovery.concurrent_small_file_streams 2
index.recovery.file_chunk_size 512кб
index.recovery.translog_ops 1000
index.recovery.translog_size 512кб
index.recovery.compress правда
index.recovery.max_bytes_per_sec 40 МБ

TTL интервал

Интервал времени жизни (TTL) определяет время документа, по истечении которого документ удаляется. Ниже приведены динамические настройки для управления этим процессом -

Настройка Значение по умолчанию
index.ttl.interval 60-е годы
index.ttl.bulk_size 1000

Узел

Каждый узел может быть узлом данных или нет. Вы можете изменить это свойство, изменивnode.dataнастройка. Установка значения какfalse определяет, что узел не является узлом данных.