索引的生命周期策略是ELK中非常有意义的功能,一般用于热(hot)、温(warm)、冷(clod)数据的索引和分片管理,以及定期删除过期的数据,以确保ES的健康运行。
划重点:
生命周期有四个重要阶段:
hot: 索引需被频繁的写入和查询(快)
warm: 索引不可写入,但是仍需查询(中)
cold: 索引不可写入,很少被查询(慢)
delete: 索引已无价值,干掉完事
需要注意理解索引生命周期策略的执行逻辑,通常我们会使用滚动更新,并希望当前写操作的索引处于hot阶段以提供最优服务,同时该索引会被记录为rollover(rollover翻译过来是“转换”或“翻转”的意思,意思就是该索引可转为warm阶段)。
以冷(温)热分离为例,若满足策略hot阶段的任一rollover触发条件时,系统会自动把当前hot阶段的索引rollover为warm阶段索引(通常会触发数据迁移至warm节点),同时根据模板创建一个新的索引提供写入操作,若在转换为warm时启用了压缩则原索引会被命名为shrink开头,并保留原索引的别名。
配置步骤入下:
1、配置索引生命周期策略(傻瓜式UI操作就不举例了)
为了尽快看到效果,可以通过调整索引生命周期策略的检测间隔为10s来看效果,即索引中数据写入且触发refresh动作10s后会触发生命周期检测与执行,命令如下:
PUT /_cluster/settings { "transient": { "indices.lifecycle.poll_interval": "10s" //系统原默认值是10分钟 } }
2、配置索引模板(请根据需要自行配置Mapping部分)
PUT _template/test_template { "index_patterns": ["test-*"], "settings": { "number_of_shards": 2, "number_of_replicas": 1, "index.lifecycle.name": "test_policy", //第一步配置的策略名称 "index.lifecycle.rollover_alias": "test", //策略执行时对rollover状态的index设置别名
"index.routing.allocation.require.temperature": "hot" //请根据ES集群的配置参数设置红色部分,如temperature你配置的是是叫box_type,那请改成box_type } }
3、接着就是创建新索引(需匹配上面创建的模板),写入数据,刷新索引后等待10s观察是否触发策略