Поскольку данные временных рядов непрерывно записываются в Elasticsearch, а размер индекса продолжает расти, вы можете настроить Index Lifecycle Management (ISM) для периодического переключения данных на новые индексы и удаления старых индексов.
В этом примере создаётся политика жизненного цикла для кластера Elasticsearch. Согласно этой политике, когда размер индекса достигает 1 TB или индексу один день, автоматически создаётся новый индекс; через семь дней после создания индекса дублирование данных будет отключено; через 30 дней после создания индекса индекс будет удалён.
Предположим, что индекс генерирует примерно 2,4 TB данных каждый день. Псевдоним индекса log-alias. Следующий рисунок иллюстрирует формат данных в кластере. При чтении он указывает на все индексы, чьи имена начинаются с test. При записи он указывает на последний индекс.
Рисунок 1 log-alias формат

Один день в периоде ролловера относится к 24 часам после времени создания индекса, а не к календарному дню.
Целевой кластер Elasticsearch доступен.
Версия кластера Elasticsearch должна быть 7.6.2 или новее.
Левая часть консоли — это поле ввода команды, а треугольный значок в её правом верхнем углу является кнопкой выполнения. Правая часть показывает результат выполнения.
Описание политики: Когда размер индекса достигает 1 TB или индекс был создан более чем один день, выполняется rollover индекса. Когда индекс создан семь дней, копирование данных отключается. Когда индекс создан 30 дней, индекс удаляется.
PUT _opendistro/_ism/policies/rollover_workflow{"policy": {"description": "rollover test","default_state": "hot","states": [{"name": "hot","actions": [{"rollover": {"min_size": "1tb","min_index_age": "1d"}}],"transitions": [{"state_name": "warm","conditions": {"min_index_age": "7d"}}]},{"name": "warm","actions": [{"replica_count": {"number_of_replicas": 0}}],"transitions": [{"state_name": "delete","conditions": {"min_index_age": "30d"}}]},{"name": "delete","actions": [{"delete": {}}]}]}}
После создания политики жизненного цикла выполните следующую команду, чтобы запросить детали политики:
GET _opendistro/_ism/policies/rollover_workflow
Описание шаблона: Все новые индексы, начинающиеся с test автоматически связываются с политикой жизненного цикла rollover rollover_workflow. Псевдоним log_alias используется во время перестройки.
PUT _template/template_test{"index_patterns": "test*","settings": {"number_of_replicas": 1,"number_of_shards": 1,"opendistro.index_state_management.policy_id": "rollover_workflow","index.opendistro.index_state_management.rollover_alias": "log_alias"},"mappings": {"properties": {"name": {"type": "text"}}}}
Параметр | Описание |
|---|---|
number_of_shards | Количество шардов индекса |
number_of_replicas | Количество реплик шардов индекса |
opendistro.index_state_management.policy_id | Имя политики жизненного цикла |
index.opendistro.index_state_management.rollover_alias | Псевдоним индекса для перестройки |
После создания шаблона индекса вы можете выполнить следующую команду, чтобы запросить детали шаблона:
GET _template/template_test
Следующий индекс — это URL‑код <test-{now/d}-000001>. По умолчанию имя индекса содержит дату создания. Например, если индекс создан 2022-06-02, имя индекса test-2022.06.02-000001.
PUT %3Ctest-%7Bnow%2Fd%7D-000001%3E{"aliases": {"log_alias": {"is_write_index": true}}}
POST log_alias/_bulk{"index":{}}{"name":"name1"}{"index":{}}{"name":"name2"}{"index":{}}{"name":"name3"}{"index":{}}{"name":"name4"}{"index":{}}{"name":"name5"}{"index":{}}{"name":"name6"}
GET _cat/indices/test*?s=i
Должно быть минимум два индекса, например:
green open test-<Date>-000001 r8ab5NX6T3Ox_hoGUanogQ 1 1 6 0 416b 208bgreen open test-<Date>-000002 sfwkVgy8RSSEw7W-xYjM2Q 1 1 0 0 209b 209b
В приведённой выше информации, test-<Date>-000001 это индекс, созданный в 4, и test-<Date>-000002 это индекс, созданный через rollover.
GET _cat/aliases/log_alias?v
Алиас должен указывать на несколько индексов, например:
alias index filter routing.index routing.search is_write_indexlog_alias test-<Date>-000001 - - - falselog_alias test-<Date>-000002 - - - true
Сценарии
После того как перелистывание индекса пропущено, ISM более не будет пытаться выполнять перелистывание или создавать перелистанные индексы. Это означает, что пропуск перелистывания индекса может привести к потере данных. Пожалуйста, будьте осторожны.
Ограничения
Чтобы пропустить перелистывание индекса, версия кластера Elasticsearch должна быть 7.6.2 или 7.10.2, а версия образа кластера не должна быть ранее 7.x.2_25.1.0_x.x.x.
Процедура
PUT index_name/_settings{"index.plugins.index_state_management.rollover_skip": true}
Если true возвращается, конфигурация выполнена успешно.
POST _opendistro/_ism/retry/index_name
Если возвращена следующая информация, попытка повторного выполнения прошла успешно:
{"updated_indices": 1,"failures": false,"failed_indices": []}