《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.7.索引生命周期管理(6) https://developer.aliyun.com/article/1228509
通过 Data tiers 使用 ILM
data tiers ( 数据层 )是具有相同数据角色的节点的集合
l Content tier ( 内容层 )节点处理诸如产品目录之类的内容的索引和查询负载。
l Hot tier ( 热层 ) 节点处理诸如日志或指标之类的时间序列数据的索引负载,并保存你最近,最常访问的数据。
l Warm tier ( 温层 )节点保存的时间序列数据访问频率较低,并且很少需要更新。
l Cold tier ( 冷层 )节点保存时间序列数据,这些数据偶尔会被访问,并且通常不会更新。
推荐冷热分离采用 data tiers 这种方式,节点可以通过如下配置方式配置:
# elasticsearch.yml # data_content, data_hot, data_warm, data_cold # 配置该节点既属于内容层又属于热层 node.roles: ["data_hot", "data_content"]
1、创建生命周期策略
warm 阶段将 index 迁移至 warm 节点,cold 阶段禁用 migrate,将 index 分配给rack_id 为 one 或 two 的节点。
创建生命周期策略,在 index 创建 1 天后进入 hot 阶段,设置优先级为 100, 当 index 主分片大小超过 50gb 或者 index 文档数超过 500000000 或者 index 创建超过 2 天生成新的 index,warm 阶段将 index 迁移至 warm 节点,cold 阶段将 index 副本数设置为 1,禁用 migrate, 并将 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 }, "migrate" : { } } }, "cold": { "min_age": "1d", "actions": { "set_priority": { "priority": 0 }, "allocate": { "number_of_replicas": 1, "include" : { "data": "cold" } }, "migrate" : { "enabled": false } } }, "delete": { "min_age": "7d", "actions": { "delete": {} } } } } }
2、创建索引模板,将生命周期应用到 index
设置 shard 数为 2, 备份数 为 1, 生命周期策略为 logx_policy
PUT _index_template/logx-template { "index_patterns" : ["logx-*"], "priority" : 1, "data_stream": { }, "template": { "settings" : { "index" : { "number_of_shards" : "2", "number_of_replicas" : "1", "lifecycle.name": "logx_policy" } } } }
3、创建 data stream
POST /logx-business/_doc/ { "@timestamp":"2021-04-13T11:04:05.000Z", "message":"Loginattemptfailed" } # OR PUT /_data_stream/logx-business
后续的数据读写均使用固定 index: logx-business
创作人简介:
赵凯,平时喜欢阅读 elastic 官网,对 Elasticsearch 较为熟悉。 学习一门技术,官网永远是最好的学习文档。 在西安,我们也建立了自己的圈子,欢迎西安的小伙伴们一起交流,共同进步。