ES ILM策略
Index Lifecycle Management(ILM)策略
Elasticsearch可以通过 Index Lifecycle Management (ILM) 策略自动创建每日滚动索引。以下是一个创建每日滚动索引的示例,配合ILM策略可以让索引根据数据增长自动创建新的每日索引,并在数据老化时移动到温或冷存储中。
配置ILM策略
首先,创建一个ILM策略来定义索引的生命周期,策略包括热(hot)、温(warm)和冷(cold)阶段。
PUT_ilm/policy/daily-log-policy
{
"policy":{
"phases":{
"hot":{# 热存储阶段,用于写入新数据
"actions":{
"rollover":{# 数据超过条件时,自动创建新的索引
"max_age":"1d",# 索引1天后滚动
"max_size":"50gb"# 或者当索引达到50GB时滚动
}
}
},
"warm":{# 温存储阶段,用于较少访问的数据
"min_age":"3d",# 数据进入温存储的最小年龄为3天
"actions":{
"forcemerge":{# 压缩索引,减少资源占用
"max_num_segments":1
}
}
},
"cold":{# 冷存储阶段,几乎不访问的数据
"min_age":"7d",
"actions":{
"freeze":{}# 冻结索引,节省内存和CPU
}
},
"delete":{# 删除阶段
"min_age":"30d",
"actions":{
"delete":{}# 索引存储超过30天后自动删除
}
}
}
}
}
创建ES索引模版并使用ILM策略
然后,创建一个索引模板,让新数据根据定义的ILM策略按天生成新的索引。
PUT_index_template/logs-template
{
"index_patterns": ["logs-*"], # 匹配名称前缀为logs-的索引
"template":{
"settings":{
"number_of_shards":1,#分片数量
"number_of_replicas":1,#副本数量
"index.lifecycle.name":"daily-log-policy",# 应用ILM策略
"index.lifecycle.rollover_alias":"logs"# 设置别名,供rollover使用
},
"aliases":{
"logs":{}# 创建一个别名“logs”
}
}
}
创建初始索引并开始滚动
首次创建时,需要创建一个初始索引logs-000001
,并与logs
别名关联,之后的每日索引会在数据量达到滚动条件后自动创建。
PUTlogs-000001
{
"aliases":{
"logs":{
"is_write_index":true# 将logs别名指向初始写入索引
}
}
}
开始索引数据
当Filebeat或其他数据源向Elasticsearch写入数据时,只需指定logs
别名。ILM策略会确保每天创建新的索引(如 logs-000002
, logs-000003
等),并自动将旧索引转移到温、冷阶段,最后根据生命周期删除。
总结
通过这种方式,可以实现按天自动创建索引,ILM策略会根据条件自动进行滚动,无需手动创建每日索引,索引的生命周期管理也更加智能和高效。
评论
0 评论