인덱스 상태와 상태별 태스크를 정의하여 인덱스를 자동화 관리할 수 있는 설정
// example json
{
"id": "hot-warm-cold-state-ploicy", // 정책 명
"seqNo": 124,
"primaryTerm": 1,
"policy": {
"policy_id": "hot-warm-cold-state-ploicy",
"description": "Demonstrate a hot-warm-cold workflow.",
"last_updated_time": 1736823816892,
"schema_version": 21,
"error_notification": null,
"default_state": "hot", // 인덱스 생성시 기본 상태
"states": [
{
"name": "hot", // hot 상태
"actions": [],
"transitions": [
{
// hot 상태에서 35일 뒤 warm 상태로 변경
"state_name": "warm",
"conditions": {
"min_index_age": "35d"
}
}
]
},
{
"name": "warm", // warm 상태
"actions": [
{
"timeout": "24h",
"retry": {
"count": 5,
"backoff": "exponential",
"delay": "1h"
},
// Hot 인덱스에서 Warm 인덱스로 변경
// == Data Node에서 Ultrawarm Node로 데이터 이동
"warm_migration": {}
}
],
"transitions": [
{
// warm 상태에서 70일 뒤 cold 상태로 변경
"state_name": "cold",
"conditions": {
"min_index_age": "70d"
}
}
]
},
{
"name": "cold", // cold 상태
"actions": [
{
"retry": {
"count": 3,
"backoff": "exponential",
"delay": "1m"
},
// Warm 인덱스에서 Cold 인덱스로 변경
// == Ultrawarm Node에서 Cold Storage로 데이터 이동
"cold_migration": {
"start_time": null,
"end_time": null,
"timestamp_field": "@timestamp",
"ignore": "none"
}
}
],
"transitions": []
}
],
"ism_template": [
{
// 해당 패턴의 인덱스가 생성될 때 자동으로 정책 적용
"index_patterns": [
"alpha-event-data-*"
],
"priority": 100,
"last_updated_time": 1736823816889
}
]
}
}
OpenSearch에서 구분하는 index 종류 | Hot index | Warm index | Cold index |
---|---|---|---|
물리적으로 데이터가 저장된 곳 | Data Node | Utarwarm Node | Cold Storage |
ISM에서 임의로 정의한 인덱스 상태 명 (위 예시기준) | hot | warm | cold |
작업모드 | 쓰기, 읽기 | 읽기 | 읽기 |
정책 생성 후 새로 생성되는 인덱스는 자동으로 정책이 적용되지만 이미 생성된 인덱스는 따로 연결해줘야한다.