《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.7.索引生命周期管理(4) https://developer.aliyun.com/article/1228512
通过 alias 使用 ILM
1、创建生命周期策略
warm 阶段将 index 分配给节点属性 data 为 warm 的节点, cold 阶段将 index 分配给节点属性 data 为 cold 的节点。
节点属性可以通过 elasticsearch.yml 进行配置或环境变量设置。
# 启动命令 bin/elasticsearch -Enode.attr.data=warm # elasticsearch.yml # node.attr.xxx: xxx # 建议使用 node.roles 进行配置, 可以参考 通过 data tiers 使用 ILM 这一章节 # node.attr 后续版本可能不再使用 node.attr.data: warm
创建生命周期策略,在 index 创建 1 天后进入 hot 阶段,设置优先级为 100, 当 index 主分片大小超过 50gb 或者 index 文档数超过 500000000 或者 index 创建超过 2 天生成新的 index
warm 阶段将 index 迁移至属性 data 为 warm 的节点。
cold 阶段将 index 副本数设置为 1 并将 index 迁移至属性 data 为 cold 的节点
当 hot ,warm,cold 阶段的动作都完成并且 index 创建达到 7 天,删除 index。
PUT _ilm/policy/logx_policy { "policy": { "phases": { "hot": { "min_age": "1d", "actions": { "set_priority": { "priority": 100 }, "rollover": { "max_age": "2d", "max_docs": 500000000, "max_size": "50gb" } } }, "warm": { "min_age": "1d", "actions": { "set_priority": { "priority": 50 }, "allocate": { "include": { "data" : "warm" } } } }, "cold": { "min_age": "1d", "actions": { "set_priority": { "priority": 0 }, "allocate": { "number_of_replicas": 1, "include" : { "data": "cold" } } } }, "delete": { "min_age": "7d", "actions": { "delete": {} } } } } }
2、创建索引模板,将生命周期应用到 index
设置 shard 数为 2, 备份数 为 1, 生命周期策略为 logx_policy,滚动别名为 logx
PUT _index_template/logx-template { "index_patterns" : ["logx-*"], "priority" : 1, "template": { "settings" : { "index" : { "number_of_shards" : "2", "number_of_replicas" : "1", "lifecycle.name": "logx_policy", "lifecycle.rollover_alias": "logx" } } } }
3、创建第一个 index,以下两种形式任选一种即可, index 格式必须满足该正则 ^.*-\d+$ ,example:logs-000001
PUT logx-000001 { "aliases": { "logx": { "is_write_index": true } } } # OR 带创建日期的 index # PUT /<logx-{now/d}-1> with URI encoding: PUT /%3Clogx-%7Bnow%2Fd%7D-1%3E { "aliases": { "logx": { "is_write_index": true } } }
后续的数据读写均使用固定别名 logx
《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.7.索引生命周期管理(6) https://developer.aliyun.com/article/1228509