Elastic Search 6.x 版本 rollover 配置

背景

业务里有发送消息的请求,如短信、邮件、企信等,这些数据都会存储到 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),其实就是 的形式,可以去网站(https://www.urlencoder.io/)转化。

{
  "aliases": {
    "my_template": {
      "is_write_index": true
    }
  }
}

Elastic Search 6.x 版本 rollover 配置_第1张图片
到此,配置完成。可以通过命令: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"
    }
}

你可能感兴趣的:(es,服务器,elasticsearch,rollover,运维)