业务里有发送消息的请求,如短信、邮件、企信等,这些数据都会存储到 ES 中,用于数据的查询和问题排查等。每天都有几十万至几百万的数据,手动删除数据也比较繁琐,可以通过 ES 的 rollover 机制来实现根据条件自动创建和删除 index,解放双手。
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": {}
}
}
}
}
}
如上所示:
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),其实就是
{
"aliases": {
"my_template": {
"is_write_index": true
}
}
}
到此,配置完成。可以通过命令:GET /my_template/_ilm/explain 查看配置的 ilm 是否生效,若未生效则需要查看具体原因进行处理。
需要将历史 index 的数据迁移到新的 rollover index,可以使用如下方法:
POST:/_reindex(如下,可以配置时间范围)
{
"source": {
"index": "my_template_source",
"query": {
"range": {
"created": {
"gt": 1706716800000
}
}
}
},
"dest": {
"index": "my_template_target"
}
}