데이터의 수명 주기를 관리하고 정의하는 기능, 이를 사용하면 데이터를 적절한 시점에 생성, 업데이트, 삭제하고, 디스크 공간을 효과적으로 활용이 가능. 주로 로그 데이터와 같이 시간이 지남에 따라 더 이상 필요하지 않는 데이터를 자동으로 삭제하는 데 사용.
Hot-Warm-Cold를 구현하는데 필요한 최소 노드는 2개 (Cold 노드는 선택사항)
Hot Node (핫 노드):
node.name: hot-node
node.roles: ["hot_data"]
Warm Node (웜 노드):
node.name: warm-node
node.roles: ["warm_data"]
Cold Node (콜드 노드):
node.name: cold-node
node.roles: ["cold_data"]
PUT /_ilm/policy/my_policy
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_size": "50GB",
"max_age": "30d"
},
"set_priority": {
"priority": 100
}
}
},
"warm": {
"min_age": "7d",
"actions": {
"allocate": {
"require": {
"box_type": "warm_data"
}
},
"set_priority": {
"priority": 50
}
}
},
"cold": {
"min_age": "14d",
"actions": {
"allocate": {
"require": {
"box_type": "cold_data"
}
},
"freeze": {},
"set_priority": {
"priority": 0
}
}
}
}
}
}
phases
: 수명 주기의 각 단계를 정의. 일반적으로 hot
, warm
, cold
, delete
와 같은 단계를 설정min_age
: 각 단계의 시작 조건으로, 해당 단계가 적용되기 전에 인덱스가 설정된 최소 기간을 지정. 예를 들어, hot
단계가 7일 이내의 인덱스만 처리하도록 설정actions
: 각 단계에서 수행되어야 하는 작업을 정의rollover
: 인덱스가 일정 크기 또는 나이에 도달하면 새로운 인덱스로 롤오버되도록 설정max_size
: 새로운 인덱스로 롤오버할 때 지정된 최대 크기max_age
: 새로운 인덱스로 롤오버할 때 지정된 최대 나이allocate
: 특정한 조건에 따라 샤드를 할당require
: 할당을 위한 조건을 지정. 예제에서는 box_type
으로 노드의 역할을 기준으로 할당freeze
: 해당 단계에 도달하면 인덱스를 읽기 전용 상태로 변경하여 추가적인 쓰기를 막음set_priority
: 해당 단계에서의 우선 순위를 지정. 높은 우선 순위는 더 높은 성능을 의미하며, 낮은 우선 순위는 저장 공간을 최적화하는 데 사용PUT _template/my_template
{
"index_patterns": [
"test-*"
],
"settings": {
"index.lifecycle.name": "my_policy",
"index.lifecycle.rollover_alias": "test-alias"
}
}
PUT test-000001
{
"aliases": {
"test-alias": {
"is_write_index": true
}
}
}