Elasticsearch 从版本6.8开始已经免费开放索引生命周期管理的功能,通过该功能我们可以实现日志索引不同阶段的细化管理进而达到实际需求。本文基于以往的索引生命周期管理知识沉淀作进一步的深化,如大家想了解ILM的相关文章,请参考如下链接:
1,Elasticsearch 索引生命周期管理与冷热集群部署相关文档,请查看下面的链接:
https://cloud.tencent.com/developer/article/1623602
2,如何利用Elasticsearch 索引生命周期管理集群上的超级大索引,请查看下面的链接:
https://cloud.tencent.com/developer/article/1648879
3,Elasticsearch 索引生命周期管理策略综合实践《一》,请查看下面的链接:
https://cloud.tencent.com/developer/article/1672954
4,Elasticsearch 索引生命周期管理策略综合实践《二》,请查看下面的链接:
https://cloud.tencent.com/developer/article/1677045
通过前面的学习,我们知道Rollover可以非常好的去管理集群中的大索引,按照它约定的规则去触发滚动数据到新的索引上。但是因为Rollover不能自动更新,需要结合ILM(Index Life Management(缩写) -- 索引生命周期管理策略)才能自动更新。因此,ILM跟Rollover必然走向融合是大势所趋。
我们在前面的学习中可以了解到,Rollover 的机制是前端往别名写,别名根据条件写入特定的索引上。Rollover有较严格的语法要求,具体如下:
1,使用Rollover滚动索引的时候,必须要先手动创建初始索引。
2,Rollover必须要与别名关联,因为Rollover是根据别名来触发索引滚动的。
3,初始索引必须是以000001结尾,长度是6位,否则策略不生效,如滚动成功,索引名回自动+1,比如 索引名-000002....
PUT nginxserverlog-000001 //定义初始索引
{
"aliases": {
"nginx_weblogs": { //索引别名
"is_write_index":true //允许写
}
}
}
那么我们指定一个规则,想要10个文档就滚动更新一下索引,结果会是什么样子呢?如下图:
只要满足条件,它就回依次类推,滚动更新。
那么,在上面的实际过程中,我们有没有疑问呢?(***本节重点***)
当然会有,就是这个索引名可不可以基于时间戳的形式去滚动更新呢?因为如果上面的索引没有时间区分的话,基于时间的日志管理比如索引删除、数据检索的时候还是很多不便。如何解决基于时间格式索引的自动滚动更新呢,咱们接着往下看:
如果需要在索引名称上以日期进行标记,可以使用{now/d}的方法来解决这个问题,格式如下:
PUT %3Cnginx-log-%7Bnow%2Fd%7D-000001%3E //基于日期的date Math 格式转换
{
"aliases": {
"nginx_weblogs": { //别名
"is_write_index":true //允许索引写
}
}
}
那么上面,我们就定义了一个以nginx-log开头,以当天日期为标记,尾数是000001的初始索引。这样,就解决了我们Rollover 时间戳标记的问题。这样更有利于集群索引的灵活管理,因此该方法得以大范围引用。
我们基于同样的写入操作,我们经过论证发现如下的结论:
那么这样,我们就能将索引切分为以日期为标记细分为N个不通的新索引。
Rollover优势:
1,索引以日期标记,清晰明了,便于索引管理;
2, 能够将某天的超级大的索引细分为不同的规范索引,集群更健康;
Rollover缺点:
不适合对存量索引需要进行后续更新的相关操作的业务环境。
更多时间戳 Date Math方法,参考:
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/date-math-index-names.html
本文将索引生命周期管理策略的相关文章全部汇总,并再次基于Rollover功能作了更细化的更新并予以论证。实际环境中,我们要更多的根据业务去灵活调整策略配置,不仅仅ES 配置,比如Logstash ,Flink都可以进行ILM的相关设置。通过设置基于时间戳形式的滚动更新配合ILM自动管理,能非常有效的管理集群上的超级大索引,非常实用。
更多细节,参考:
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/index-lifecycle-management.html
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。