Elasticsearch: Настройки кластера, настройки индекса и настройки узла.

Если вы используете кластер Elasticsearch, вам, вероятно, потребуется его настройка. Неважно, какой у вас сценарий использования, неважно, какую должность вы занимаете в компании, если вы используете Elasticsearch, вам всегда нужно иметь определенное представление о его настройках и корректировать их, чтобы они лучше соответствовали вашим потребностям. Но с другой стороны, существует так много настроек Elasticsearch, что начать немного сложно. Поэтому я хочу написать эту статью, чтобы обсудить с вами, как разобраться в различных типах настроек Elasticsearch.

Elasticsearch

Прочитав эту статью, вы поймете:

  • Область применения настроек (кластер, индекс, узел, хранилище снапшотов и т.д.)
  • Настройки кластера
  • Настройки индекса
  • Настройки узла
  • примеры использования curl

Эта статья основана на Elasticsearch 7, конкретное содержание может немного отличаться от используемой вами версии.

Область применения настроек

Различные настройки в Elasticsearch могут быть применены к разным областям.

  • Кластер (/_cluster/settings) Эти настройки будут применены ко всем узлам во всем кластере, например, (распределение шардов на уровне кластера и настройки маршрутизации) являются настройками на уровне кластера.
  • Индекс (/{target}/_settings) Эти настройки будут применены к выбранной цели. Целью может быть один или несколько индексов, потоков данных. Несколько целей должны быть разделены запятыми.
  • Нода - Настройки узла в основном относятся к конфигурации роли узла: master / data / ingest / ml / ... Это может быть достигнуто путем изменения конфигурационного файла elasticsearch.yml.
  • Репозиторий моментальных снимков (/_snapshot/{repository} ). Например, плагин хранилища моментальных снимков предоставляет настройки для каждого хранилища моментальных снимков, такие как расположение хранилища, скорость создания моментальных снимков и скорость восстановления моментальных снимков.

Настройки кластера

Настройки кластера могут быть:

  • Постоянными, то есть сохраняющими свою силу после перезапуска всего кластера
  • Переходными, то есть недействительными после перезапуска всего кластера.

Примеры постоянных настроек (JSON начинается с "persistent"):

Пример переходной настройки (JSON начинается с "transient"):

Приоритет настроек кластера:

  1. переходные настройки кластера
  2. Постоянные настройки кластера
  3. Настройки в конфигурационном файле elasticsearch.yml
  4. Настройки по умолчанию

Согласно официальной документации Cluster update settings API, общекластерные настройки рекомендуется задавать через settings API. Для обработки локальной конфигурации используйте только файл elasticsearch.yml. Таким образом, вы можете гарантировать, что конфигурация всех узлов в кластере одинакова. В противном случае вы можете случайно установить разные конфигурации на разных узлах, а такие различия очень трудно обнаружить.

Существует два типа настроек кластера: статические и динамические:

  • Статические - Эти настройки применяются только на узлах, которые не были запущены или были выключены, и настраиваются в файле elasticsearch.yml. Каждый узел должен быть настроен индивидуально.
  • Динамические - Эти настройки могут быть изменены в работающем кластере через API обновления настроек кластера.

Elasticsearch имеет множество настроек для всего кластера: настройки безопасности, настройки распределения и маршрутизации шардов, настройки управления жизненным циклом индексов (ILM), настройки протоколирования, настройки сети и т.д. Мы не будем вдаваться в подробности здесь, но вы можете обратиться к официальной документации Configuring Elasticsearch и связанным с ней подстраницам для получения дополнительной информации.

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

Эти настройки будут применены к выбранной цели. Целью может быть один или несколько индексов, потоков данных, псевдоним. Несколько целей должны быть разделены запятыми ,.

Настройки индексов делятся на два типа - статические и динамические:

  • Статические - Эти настройки могут быть изменены только при создании индекса или после его закрытия.
  • Динамические - Эти настройки можно изменить с помощью API update-index-settings в действующем индексе.

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

Настройки узла

Настройки узла в основном относятся к конфигурации роли узла: master / data / ingest / ml / ... Этого можно достичь путем изменения конфигурационного файла elasticsearch.yml. Наиболее важными ролями должны быть: master-eligible node (участие в выборах мастера, что жизненно важно для поддержания существования кластера), data node (хранение данных), coordinating-only node (координация задач, аналогично балансировке нагрузки). Подробности см. в официальном документе выше.

Например, в конфигурационном файле elasticsearch.yml можно установить узел как узел данных:

шпаргалка по curl

В статье выше мы рассмотрели различные типы настроек. Но в реальной работе недостаточно просто понимать их типы. Вам может понадобиться запросить, обновить или удалить некоторые настройки, чтобы удовлетворить свои реальные потребности. Далее рассмотрим, как использовать curl для работы с динамическими настройками кластеров и индексов.

Пример настройки уровня индекса:

Для статических настроек индекса необходимо сначала закрыть индекс, изменить настройки, а затем запустить:

Заключение

  • Если вы хотите узнать больше о настройках кластера, ознакомьтесь с официальным документом Configuring Elasticsearch и связанными с ним подстраницами.
  • Если вы хотите узнать больше о настройках узла, ознакомьтесь с официальным документом Configuring Elasticsearch> Node.
  • Если вы хотите узнать больше о настройках индекса, ознакомьтесь с официальным документом Index modules.
  • При использовании curl для запроса или изменения настроек Elasticsearch рекомендуется использовать его с командой jq. Это поможет вам быстро изменить содержимое JSON и получить нужные результаты.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий