Elastic Stack 实战教程 2:ILM 索引生命周期管理
本系列 Elastic Stack 实战教程总共涵盖 5 个实验,目的是帮助初学者快速掌握 Elastic Stack 的基本技能。
云起实验室在线体验地址:https://developer.aliyun.com/adc/scenarioSeries/24e7a7a4d56741d0bdcb3ee73c9c22f1
- 实验 1:Elastic Stack 8 快速上手
- 实验 2:ILM 索引生命周期管理
- 实验 3:快照备份与恢复
- 实验 4:使用 Fleet 管理 Elastic Agent 监控应用
- 实验 5:Elasticsearch Java API Client 开发
索引生命周期管理 (Index Lifecycle Management, ILM) 是在 Elasticsearch 在 6.6(公测版)首次引入并在 6.7 版正式推出的一项功能。ILM 旨在帮助用户更方便地管理时序数据(例如日志,指标等)。时序数据有如下几个典型的特点:
- 随着时间的推移,数据的价值在逐渐降低。
- 数据量非常大。
- 数据追加写入,通常不会修改旧数据。
随着数据量的不断增大,我们需要对索引进行一定的维护管理甚至是删除清理。利用 ILM 策略我们针对索引不同阶段对数据读写的要求,将索引分配到合适的节点上,从而更好地利用机器的资源:
- 例如最新需要频繁读写的数据,可以保存到 SSD 硬盘的节点上。
- 对于较旧的数据,可以保存到机械硬盘的节点上。
- 对于归档数据,可以保持到大容量廉价硬盘的节点上。
- 当数据超过一定的时间,不再需要时,可以将该数据删除。
ILM 将一个索引的生命周期定义为了 5 个阶段,除了 Hot 阶段以外,其他阶段都是可选的。
阶段 | 介绍 |
---|---|
Hot | 索引正在被实时地写入和查询,可根据索引的文档数、大小、时长决定是否调用 Rollover API 来滚动创建新的索引。 |
Warm | 索引不再被更新,但仍在被查询。 |
Cold | 索引不再被更新,并且很少被查询,如果这些查询比较慢也没关系。 |
Frozen | 索引不再被更新,并且很少被查询,如果这些查询非常慢也没关系。 |
Delete | 不再需要索引,可以安全地删除。 |
不同的阶段只允许执行相应的 Action,具体如下表所示。
阶段 | Set Priority | Unfollow | Rollover | Read-Only | Shrink | Force Merge | Searchable Snapshot | Allocate | Migrate | Wait For Snapshot | Delete |
---|---|---|---|---|---|---|---|---|---|---|---|
Hot | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Warm | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ |
Cold | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Frozen | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
Delete | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |