目标
通过ILM策略防止单个索引膨胀引发异常。
问题
实际操作时索引没有预期策略精确执行。
- 长时间没执行:等了好久;
- 执行不够精准:超过设置文档数量策略;超过size大小策略。
#创建ilm策略
PUT _ilm/policy/datastream_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "5MB",
"max_age": "1d",
"max_docs": 1
}
}
},
"delete": {
"min_age": "90d",
"actions": {
"delete": {}
}
}
}
}
}
#创建索引模板
PUT _template/datastream_template
{
"index_patterns": [
"datastream-*"
],
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0,
"index.lifecycle.name": "datastream_policy",
"index.lifecycle.rollover_alias": "datastream"
}
}
#初始化索引
PUT datastream-000001
{
"aliases": {
"datastream": {
"is_write_index": true
}
}
}
#创建索引
PUT datastream/_mapping
{
"properties": {
"name": {
"type": "text",
"analyzer": "standard"
}
}
}
#创建文档
POST /_bulk
{ "index" : { "_index" : "datastream"} }
{"name":"zs1"}
{ "index" : { "_index" : "datastream"} }
{"name":"zs2"}
{ "index" : { "_index" : "datastream"} }
{"name":"zs3"}
{ "index" : { "_index" : "datastream"} }
{"name":"zs4"}
解决
- 第一个问题:更改索引生命周期管理检查频率(默认10分钟)
PUT _cluster/settings
{
"transient": {
"indices.lifecycle.poll_interval": "1m"
}
}
- 第二个问题:没有精准执行
原因
LFM是定时任务,被时钟触发,像cron到点执行,不是监控实时执行。
代码语言:javascript复制// 伪代码
Timer:
if(文档总数量>策略设置数量) {
create index
}