业务背景
数据每天3亿条数据入库,需要同时满足三年以上数据的查询,服务器集群分为固态和机械两种,要求将近期数据查询尽可能提速,同时久远数据也可查
解决方案
利用ES新版本的Index Lifecycle Policies进行冷热数据配置
先在elasticsearch.yml中将各个节点设置冷热属性
node.attr.hotwarm_type:
建立一个索引名,如m12_insertzone-000001,将这个索引名设置一个别名,这样的话可以保证读的时候索引名一致,只需要访问别名,即可在所有索引中查询
Post http://172.16.10.130:9200/_aliases
{"actions" : [{ "add" : { "index" : "m12_insertzone-000001", "alias" : "m12_insertzone","is_write_index": true } }]
}
设置完别名后,还可设置当多个索引共用同一个别名时,选择哪个索引作为写入"is_write_index": true
注意es索引名要求以-结尾带数字,后续6位数字随机,命名规则参见此博客
https://rstyro.github.io/blog/2020/09/27/Elasticsearch7%E4%B9%8BRollover%E4%BD%BF%E7%94%A8%E8%AF%A6%E8%A7%A3/
配置好后进入kibana
此处打开Enable rollover,可在满足条件时自动新建一个新的索引,后续数据将往此索引上写。
再配置Hot往warm上的迁移策略,满足条件后,数据分片将从hot节点移动到warm节点上。
保存配置后,将相应的生命周期添加到对应的索引上
写入数据后进行测试
注意此时如果需要索引继续迭代到下一个索引,需要在自动创建的索引上继续绑定生命线策略