背景
业务里有发送消息的请求,如短信、邮件、企信等,这些数据都会存储到 ES 中,用于数据的查询和问题排查等。每天都有几十万至几百万的数据,手动删除数据也比较繁琐,可以通过 ES 的 rollover 机制来实现根据条件自动创建和删除 index,解放双手。
rollover 配置步骤
配置 ilm 策略
PUT _ilm/policy/50gb_30d_delete_360d_policy(自定义策略)
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "50GB",
"max_age": "30d",
"max_docs": 10000
}
}
},
"delete": {
"min_age": "360d",
"actions": {
"delete": {}
}
}
}
}
}
如上所示:
- 当一个索引的文档数超过 10000,或者文档的时间超过 30 天,或者索引的大小超过 50G,之后摄入的文档就会自动 rollover
- 文档超过 360 天,就会被自动删除
配置 index template
PUT _template/my_template(自定义模板名)
{
"order": 10,
"index_patterns": [
"my_template_*"
],
"settings": {
"index": {
"lifecycle": {
"name": "50gb_30d_delete_360d_policy",
"rollover_alias": "my_template"
}
}
},
"mappings": {
"_doc": {
"properties": {
"created": {
"type": "long"
},
"response": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
},
"aliases": {}
}
配置别名策略
PUT %3Cmy_template_%7Bnow%2Fd%7D-000001%3E(示例:my_template_2024.02.04-000001),其实就是 <my_template_{now/d}-000001> 的形式,可以去网站(https://www.urlencoder.io/)转化。
{
"aliases": {
"my_template": {
"is_write_index": true
}
}
}
到此,配置完成。可以通过命令:GET /my_template/_ilm/explain 查看配置的 ilm 是否生效,若未生效则需要查看具体原因进行处理。