В кластере Elasticsearch переключение между горячим и холодным хранилищем данных означает распределение данных по узлам с разными уровнями производительности в зависимости от температуры данных (то есть того, как часто к ним обращаются). Цель — достичь оптимальных затрат на хранение и производительности запросов.
Если ваш кластер хранит данные, используемые для разных целей, таких как аналитика в реальном времени, аналитика журналов и архивы данных мониторинга, вы можете переключать горячее и холодное хранилище для указанных индексов, чтобы сбалансировать производительность и затраты.
Рисунок 1 Как работает переключение холодного/горячего хранилища

Ключевой момент — распределять хранилище данных индекса по меткам узлов и политикам распределения индексов.
Процедура: Включите узлы холодных данных и настройте шаблон индекса или конкретные параметры индекса для распределения хранилища данных индекса. Кластер автоматически распределяет данные в соответствии с вашими настройками.
По сравнению с узлами данных, узлы холодных данных обеспечивают более низкую производительность запросов. Определите, какой тип узла использовать, исходя из потребностей вашего сервиса.
Левая часть консоли представляет собой поле ввода команды, а треугольный значок в её правом верхнем углу является кнопкой выполнения. Правая часть отображает результат выполнения.
Можно настроить шаблоны индексов или напрямую указать имена индексов для распределения конкретных индексов на data nodes или cold data nodes.
Настройте шаблон индекса для распределения соответствующих индексов на cold или hot data nodes. Например, выполните следующую команду, чтобы сохранять вновь созданные индексы, имя которых начинается с myindex, на cold data nodes. (Команда немного отличается в зависимости от версии Elasticsearch.)
PUT _template/{template_name}{"order": 1,"index_patterns": "myindex*","settings": {"refresh_interval": "30s","number_of_shards": "3","number_of_replicas": "0","routing.allocation.require.box_type": "cold"}}
PUT _template/{template_name}{"order": 1,"template": "myindex*","settings": {"index": {"refresh_interval": "30s","number_of_shards": "3","number_of_replicas": "0","routing.allocation.require.box_type": "cold"}}}
Параметр | Тип | Описание |
|---|---|---|
index_patterns | String | Определяет шаблон соответствия имени индекса. Подстановочный символ (*) может использоваться для соответствия нескольким индексам. Например, myindex* указывает на все индексы, имя которых начинается с myindex. |
routing.allocation.require.box_type | String | Указывает тип узла данных для размещения шардов. Значение может быть:
Если этот параметр не указан, шарды будут равномерно и случайным образом распределены между cold и hot дата‑нодами. |
Чтобы изменить тип узла для существующего индекса, выполните следующую команду:
PUT {index_name}/_settings{"index.routing.allocation.require.box_type": "cold"}
Parameter | Type | Description |
|---|---|---|
index_name | String | Указывает один или несколько индексов.
|
routing.allocation.require.box_type | Строка | Указывает тип узла данных для распределения шардов. Значение может быть:
Если этот параметр не указан, шарды будут равномерно и случайно распределены между холодными и горячими узлами данных. |
Выполните следующую команду для проверки распределения шардов индекса:
При большом объёме данных переключение может занять продолжительное время. Может возникнуть промежуточное состояние, когда данные индекса находятся как на холодных узлах данных, так и на обычных узлах данных.
Как показано на следующем рисунке, все шарды индекса myindex хранятся на холодном узле данных css-e668-ess-cold-esn-1-1.
index shard prirep state docs store ip nodemyindex 1 p STARTED 14085446 17.8gb 192.168.91.188 css-e668-ess- cold -esn-1-1myindex 2 p STARTED 14094005 17.9gb 192.168.91.188 css-e668-ess- cold -esn-1-1myindex 0 p STARTED 14094742 17.8gb 192.168.91.188 css-e668-ess- cold -esn-1-1
Чтобы отменить конфигурацию переключения между холодным и горячим, выполните следующую команду:
PUT {index_name}/_settings{"index.routing.allocation.require.box_type": null}
После отката данные индекса будут равномерно и случайно распределены как по холодным узлам данных, так и по обычным узлам данных.