一 .概念
ILM定义了四个生命周期阶段:Hot
:正在积极地更新和查询索引。Warm
:不再更新索引,但仍在查询。cold
:不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。Delete
:不再需要该索引,可以安全地将其删除
仅仅在 Hot阶段 可以设置 rollover滚动
在实验中可以修改设置,来缩短ILM检测时间间隔。ILM定期运行(indices.lifecycle.poll_interval),默认是10分钟,检查索引是否符合策略标准,并执行所需的任何步骤
PUT /_cluster/settings{ "transient": { "indices.lifecycle.poll_interval": "1m" } }
参数的设置:满足任意一个创建新的索引
HOT
WARM
Delete
二. 实战
1 .创建生命周期策略模板:PUT 请求
http://localhost:9099/_ilm/policy/my_index_rollover_policy
"max_docs": 5000000 设置超过500万是创建新的索引,实际测试可以设置小一点
{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_docs": 5000000},"set_priority": {"priority": 100}}},"warm": {"min_age": "30d","actions": {"forcemerge": {"max_num_segments": 1},"shrink": {"number_of_shards": 1},"allocate": {"number_of_replicas": 1},"set_priority": {"priority": 50}}},"cold": {"min_age": "90d","actions": {"freeze": {},"allocate": {"require": {"type": "cold"}},"set_priority": {"priority": 10}}},"delete": {"min_age": "3650d","actions": {"delete": {}}}}}
}
2. 创建索引模板(日志统计索引) PUT 请求:
http://localhost:9099/_template/my_statistic_log
{"index_patterns": ["my_statistic_log-*"],"settings": {"index.number_of_shards": 5,"index.number_of_replicas": 1,"refresh_interval": "60s","index.lifecycle.name": "my_index_rollover_policy","index.lifecycle.rollover_alias": "statistic_log_write"},"aliases": {"statistic_log_read": {}},"mappings": {"log": {"dynamic": "strict","_field_names": {"enabled": false},"dynamic_templates": [{"date": {"match": "*Date","mapping": {"type": "date"}}},{"strings": {"match_mapping_type": "string","mapping": {"type": "keyword"}}},{"long_or_text": {"match": "*Time","mapping": {"type": "date"}}},{"dataFormat": {"match": "*Date","mapping": {"type": "date"}}},{"timeFormat": {"match": "*Time","mapping": {"type": "date"}}},{"noAnalyzed": {"match_mapping_type": "string","mapping": {"type": "keyword"}}}],"properties": {"area": {"type": "keyword"},"desc": {"type": "keyword"},"hour": {"type": "integer"},"day": {"type": "integer"},"startTime": {"type": "date","format": "yyyy-MM-dd HH:mm:ss"},"totalCount": {"type": "long"}}}}
}
3. 根据索引模板创建起始索引(日志统计索引)
put 请求: http://localhost:9099/my_statistic_log-000001
{"aliases": {"statistic_log_write": {"is_write_index": true}}
}
4. 查看索引生效:GET请求
http://localhost:9099/my_statistic_log-000001/_ilm/explain
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/_setting_up_a_new_policy.html