ES索引生命周期管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES索引生命周期管理相关的知识,希望对你有一定的参考价值。

参考技术A

定义:以时间为导向对数据进行应用策略操作。
索引管理流程:热数据->暖数据->冷数据->数据归档->数据删除
索引策略动作:优先级、重索引、分片分配、只读、合并、收缩、冻结、删除

针对索引根据时间、空间、类型、优先级进行不同种类的管理策略。

示例:
a. 我需要将tdx_ 索引自动关闭30天前的数据,自动删除180天前的数据;
b. 我需要将jty_ 索引每达到100g新生成一个新的二级索引;
c. 我需要将ths_ 和jty_ 索引在进行段合并时,第一优先顺序为ths索引,第二优先顺序为jty索引;

针对索引根据不同策略,进行相关的规则设计以及阶段设计

示例:
针对tdx_ 索引,我需要先合并,再收缩,再关闭,再删除;
针对jty_ 索引,我需要增加副本,再关闭,再删除

针对每个动作,编写索引的实际操作脚本
合并:

关闭:

针对每个策略,调用系统定时任务进行循环操作

ES7.0版本提供ILM策略进行es-stack的组件生命周期管理功能;
ES6.x及以下版本使用elasticsearch-curator进行索引策略动作;
使用ILM策略优先级比使用curator优先级更高,为了避免冲突,使用ILM进行索引管理后尽量避免使用curator再次进行管理;

通过将生命周期策略附加到用于创建索引模板的索引模板来控制索引在老化时的处理方式。您可以更新策略以修改新索引和现有索引的生命周期。

对于时间序列索引,索引生命周期中有四个阶段:
•热- 索引正在积极更新和查询。
•暖- 索引不再更新,但仍需要查询。
•冷- 索引不再被更新,且很少被查询。数据仍然需要搜索,但如果这些查询速度较慢也没关系。
•删除- 不再需要索引,可以安全删除。

生命周期策略控制索引如何在这些阶段中转换以及在每个阶段对索引执行的操作。该政策可以指定:
•要转移到新索引的最大空间或时间。
•索引不再更新和主分片的数量可以减少。
•强制合并以永久删除标记为删除的文档。
•索引可以移动到性能较低的硬件。
•可用性不那么重要的索引和副本的数量可以减少。
•索引需要进行安全删除。

例如,如果要将一组ATM中的度量标准数据编入索引到Elasticsearch,则可以定义一个策略:
1.当索引达到50GB时,转到新索引。
2.将旧索引移动到暖数据阶段,将其标记为只读,并将其合并缩小为单个分片单个数据段。
3.7天后,将索引移至冷数据阶段并将其移至较便宜的硬件。
4.达到所需的30天保留期后,删除索引。

Curator安装

Centos7
wget https://packages.elastic.co/curator/5/centos/7/Packages/elasticsearch-curator-5.7.6-1.x86_64.rpm

Centos6
wget https://packages.elastic.co/curator/5/centos/6/Packages/elasticsearch-curator-5.7.6-1.x86_64.rpm

rpm -ivh elasticsearch-curator*.rpm

软件安装完毕后,得到安装目录:/opt/elasticsearch-curator
安装完毕后,需要新建一个主配置文件curator.yml:

Curator策略编写

官方链接: https://www.elastic.co/guide/en/elasticsearch/client/curator/current/actions.html

目前支持的策略动作有:
Alias(重新别名)
Allocation(分配分片)
Close(关闭索引)
Cluster Routing(集群路由)
Create Index(创建索引)
Delete Indices(删除索引)
Delete Snapshots(删除快照)
Forcemerge(段合并)
Index Settings(索引设置)
Open(打开索引)
Reindex(重新索引)
Replicas(副本分配)
Restore(重新存储)
Rollover(滚动索引)
Shrink(收缩索引)
Snapshot(索引快照)

单个策略有以下几部分组成:
a.动作名称,例如close,open,shrink,
官方链接: https://www.elastic.co/guide/en/elasticsearch/client/curator/current/actions.html

b.动作参数,例如忽略空索引,第一个执行错误继续执行后面的动作,
官方链接: https://www.elastic.co/guide/en/elasticsearch/client/curator/current/options.html

c.过滤器,例如按照时间,按照空间,按照分片等维度类型来过滤,
官方链接: https://www.elastic.co/guide/en/elasticsearch/client/curator/current/filters.html

d.过滤参数,例如设置时间大小,空间大小,索引状态模式进行过滤器的增强参数,
官方链接:
https://www.elastic.co/guide/en/elasticsearch/client/curator/current/filter_elements.html

示例:关闭索引策略

Curator启动

命令启动:
curator –config curator.ymlconfig/close.yml &
配置定时任务:
Crontab -e

0 22 * * * /usr/bin/curator –config /opt/elasticsearch-curator/curator.yml /opt/elasticsearch/config/close.yml
0 2 * * * /usr/bin/curator –config /opt/elasticsearch-curator/curator.yml /opt/elasticsearch/config/forcemerge.yml

请编写一个索引管理策略文件和定时任务,需求:

1.针对通达信索引tdx_*(按月生成),每天凌晨2点开始进行段合并,每个分片合并成3个段;

2.针对金太阳索引jty_ (按小时生成),每天凌晨3点开始进行关闭,关闭40天前的索引,且保留大于50gb的索引,同时排除掉jty_app 索引;

3.针对君泓索引jh_*(按天生成),每天22点开始进行索引分片合并,将小于1gb的索引的分片数量调整为1个分片;

4.针对tomcat索引tomcat_*(按小时生成),每天21点开始自动创建未来1天的索引;

5.针对nginx索引(nginx_jty_ ,nginx_jty48_ ,nginx_jty48_log_ ), 代表每天自动生成时间戳,需要使用一个action动作完成以上3种索引的关闭动作,自动关闭10天前的以上索引;

以上是关于ES索引生命周期管理的主要内容,如果未能解决你的问题,请参考以下文章

ES实战索引生命周期管理

ES实战索引生命周期管理

ES 索引生命周期管理策略

ES 索引生命周期管理策略

ES实战索引生命周期管理

ES实战索引生命周期管理