Учебники

Elasticsearch — Модули

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

  • Статические настройки — эти параметры необходимо настроить в файле config (asticsearch.yml) перед запуском Elasticsearch. Необходимо обновить все узлы концерна в кластере, чтобы отразить изменения этих параметров.

  • Динамические настройки — эти настройки могут быть установлены на активном Elasticsearch.

Статические настройки — эти параметры необходимо настроить в файле config (asticsearch.yml) перед запуском Elasticsearch. Необходимо обновить все узлы концерна в кластере, чтобы отразить изменения этих параметров.

Динамические настройки — эти настройки могут быть установлены на активном 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) Это ограничивает размещение более одной реплики одного и того же шарда в одном физическом узле.
indices.recovery.concurrent _streams Числовое значение (по умолчанию 3) Это контролирует количество открытых сетевых потоков на узел во время восстановления сегментов от одноранговых сегментов.
indices.recovery.concurrent _small_file_streams Числовое значение (по умолчанию 2) Это контролирует количество открытых потоков на узел для небольших файлов, имеющих размер менее 5 Мб во время восстановления сегмента.
cluster.routing.rebalance.enable
все Это значение по умолчанию позволяет балансировать для всех видов шардов.
праймериз Это позволяет балансировать осколки только для основных осколков.
реплики Это позволяет балансировать осколки только для осколков реплики.
никто Это не допускает какой-либо балансировки осколков.
cluster.routing.allocation .allow_rebalance
всегда Это значение по умолчанию всегда позволяет перебалансировать.
indices_primaries _active Это позволяет перебалансировать, когда выделены все основные сегменты в кластере.
Indices_all_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 Compute Engine Discovery
  • Открытие дзен

шлюз

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

настройка Возможное значение Описание
gateway.expected_ узлы числовое значение (по умолчанию 0) Число узлов, которые должны находиться в кластере для восстановления локальных сегментов.
gateway.expected_ master_nodes числовое значение (по умолчанию 0) Число главных узлов, которые должны находиться в кластере до начала восстановления.
gateway.expected_ data_nodes числовое значение (по умолчанию 0) Число ожидаемых узлов данных в кластере до начала восстановления.
gateway.recover_ after_time Строковое значение (по умолчанию 5м) Это указывает время, в течение которого процесс восстановления будет ожидать запуска, независимо от количества узлов, подключенных в кластере.

  • gateway.recover_ after_nodes
  • gateway.recover_after_ master_nodes
  • gateway.recover_after_ data_nodes

HTTP

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

Sr.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-запроса.

http.port

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

http.publish_port

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

http.bind_host

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

http.publish_host

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

http.max_content_length

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

http.max_initial_line_length

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

http.max_header_size

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

http.compression

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

http.pipelinig

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

http.pipelining.max_events

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

индексы

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

Выключатель

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

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

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

Node Query Cache

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

Индексный буфер

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

Кеш запроса Shard

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

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

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

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

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

TTL Интервал

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

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

Узел

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