В сценариях аналитики журналов и мониторинга затраты на хранение исторических данных со временем накапливаются. Однако большинство «холодных» данных запрашивается лишь изредка для аудита или обратного отслеживания. Хранение таких данных на дорогих локальных SSD в течение длительных периодов не имеет экономического смысла. Чтобы сбалансировать затраты на хранение с требованиями длительного удержания, CSS предоставляет функцию разделения хранилища и вычислений для кластеров OpenSearch. При настройке политики управления состоянием индекса (ISM) в сочетании с заморозкой индекса можно автоматически перемещать подходящие индексы с локальных SSD в объектное хранилище с более низкой стоимостью. Данные остаются доступными для поиска, хотя задержка запросов может увеличиться.
В этой теме описывается, как настроить политику ISM для разделения хранилища и вычислений.
В этом примере для кластера OpenSearch создаётся политика ISM. Согласно этой политике, вновь созданный индекс автоматически замораживается через три дня, данные выгружаются в OBS; и удаляется через семь дней.
Рисунок 1 Разделение хранилища и вычислений

Только кластеры OpenSearch 1.3.6 и 2.19.0 поддерживают разделённое хранилище и вычисления.
Левая часть консоли представляет собой поле ввода команды, а треугольный значок в её правом верхнем углу является кнопкой выполнения. Правая часть отображает результат выполнения.
Например, создайте политику с именем hot_warm_policy. Согласно этой политике, вновь созданный индекс автоматически замораживается через три дня, при этом данные выгружаются в OBS; и полностью удаляется через семь дней. Свяжите политику с шаблоном индекса, чтобы новые индексы, имя которых начинается с data, автоматически наследовали эту политику.
PUT _plugins/_ism/policies/hot_warm_policy{"policy": {"description": "hot warm delete workflow","error_notification": null,"default_state": "hot","states": [{"name": "hot","actions": [],"transitions": [{"state_name": "warm","conditions": {"min_index_age": "3d"}}]},{"name": "warm","actions": [{"freeze_low_cost": {} // Freeze the index.}],"transitions": [{"state_name": "delete","conditions": {"min_index_age": "7d"}}]},{"name": "delete","actions": [{"delete": {}}],"transitions": []}],"ism_template": { // Associate with an index template."index_patterns": ["data*"],"priority": 100}}}
Например, создайте индекс с именем data-2022-06-06 и записывайте данные в него пакетами.
POST data-2022-06-06/_bulk{"index":{}}{"name":"name1"}{"index":{}}{"name":"name2"}{"index":{}}{"name":"name3"}{"index":{}}{"name":"name4"}{"index":{}}{"name":"name5"}{"index":{}}{"name":"name6"}
Индекс автоматически применит политику ISM hot_warm_policy.
GET _cat/freeze_indices?s=i&v
Если возвращённый результат содержит data-2022-06-06, индекс был выгружен в OBS.
health status index uuid pri rep docs.count docs.deleted store.size pri.store.sizegreen open data-2022-06-06 x8ab5NX6T3Ox_xoGUanogQ 1 1 6 0 7.6kb 3.8kb
GET /_cat/indices?expand_wildcards=open,closed
Если возвращённый результат не содержит data-2022-06-06, индекс был удалён.