ES索引生命周期管理ILM

简介: ES索引生命周期管理ILM

前言


在使用ES的过程中,你是否遇到过这样的问题:

1、单个索引数据量持续增长,导致查询速度降低,运维困难

2、希望能根据时间周期自动生成新的索引,比如天、周、月自动生成新的索引

3、希望能定期自动删除过期的历史数据,比如3年前的订单信息。

4、自动控制数据的冷热数据分层存储。


其实ES早就提供了相关的处理机制,那就是索引生命周期管理ILM(index lifecycle management )。


一、ILM介绍


通过配置索引生命周期管理 (ILM)策略实现根据性能、弹性和保留要求自动管理索引。


使用场景:

当索引达到特定大小或文档数量时启动新索引


每天、每周或每月创建一个新索引并存档以前的索引


删除陈旧索引以执行数据保留标准


我们可以通过 Kibana Management 或 ILM API 创建和管理索引生命周期策略。

当您为 Beats 或 Logstash Elasticsearch 输出插件启用索引生命周期管理时,会自动配置默认策略。


索引生命周期策略可以触发如下操作:


可以触发的操作:

Rollover: 当索引达到特定大小、文档数量或年龄时,创建一个新的写入索引

Shrink: 减少索引中主分片的数量

Force merge: 触发强制合并以减少索引分片中的segments段数

Freeze: 冻结索引并使其只读

Delete: 永久删除索引,包括其所有数据和元数据。

ILM 可以更轻松地管理热-温-冷架构中的索引,这在您处理日志和指标等时间序列数据时很常见。


可以指定:


您想要滚动到新索引的最大分片大小、文档数或年龄。

不再更新索引并且可以减少主分片数量的点。

何时强制合并以永久删除标记为删除的文档。

索引可以移动到性能较低的硬件的点。

可用性不那么重要并且可以减少副本数量的点。

何时可以安全删除索引。

例如,如果您将 ATM 机群中的指标数据索引到 Elasticsearch 中,您可以定义一个策略,说明:

1、当索引的主分片总大小达到 50GB 时,滚动到新索引。

2、将旧索引移至热阶段,将其标记为只读,并将其缩小为单个分片。

3、7 天后,将索引移至冷阶段并将其移至较便宜的硬件。

4、达到所需的 30 天保留期后,删除索引。


简单来说,索引生命周期管理ILM通过自定义索引生命周期策略(Index lifecycle policies),可以实现自动控制索引的滚动,分片压缩,强制合并,冻结,删除等操作。


注意⚠️:


要使用 ILM,集群中的所有节点必须运行相同的版本。


二、索引生命周期


ILM将索引生命周期定义为5个阶段:


Hot 热阶段,正在更新和查询的索引

Warm 暖阶段,不再更新,但仍在查询的索引

Cold 冷阶段,索引不再更新,并且不经常查询。信息仍需要可搜索,但是查询比较慢也没关系。

Frozen 冻结阶段,索引不再更新,很少被查询。信息仍需要搜索,但是查询非常慢也没关系。

Delete 删除阶段,索引不再需要,可以安全地删除。

索引的生命周期策略(Index lifecycle policies)指定适用于哪些阶段,在每个阶段执行哪些操作,以及在阶段之间转换的时间。


阶段转变 phase transitions

ILM 根据索引的年龄在生命周期中移动索引。为了控制这些转换的时间,可以为每个阶段设置最小年龄。要使索引进入下一阶段,当前阶段的所有操作都必须完成,并且索引的年龄必须大于下一阶段的最小年龄。规定的最低年龄必须在以后各阶段之间增加,例如,最低年龄为10天的”暖”阶段之后只能是最低年龄未设定或大于10天的”冷”阶段。


索引生命周期阶段的转变主要是根据索引的年龄。


阶段执行 phase execution

ILM 控制一个阶段中的动作执行的顺序,以及执行哪些步骤以对每个动作执行必要的索引操作。


当索引进入一个阶段时,ILM 将阶段定义缓存到索引元数据中。这可以确保策略更新不会将索引置于它永远不能退出阶段的状态。如果可以安全地应用更改,ILM 将更新缓存的阶段定义。如果不能,则使用缓存的定义继续阶段执行。


ILM 定期运行,检查索引是否满足策略标准,并执行所需的任何步骤。为了避免竞态条件,ILM 可能需要运行多次以执行完成操作所需的所有步骤。例如,如果 ILM 确定某个索引已经满足滚动条件,它将开始执行完成滚动动作所需的步骤。


阶段行动 phase actions

ILM 在每个阶段支持以下操作。


Hot阶段


设置优先级 Set Priority

取消跟随 Unfollow

滚动 Rollover

只读 Read-Only

分片压缩 Shrink

强制合并 Force Merge

可搜索快照 Searchable Snapshot


Warm阶段


设置优先级 Set Priority

取消跟随 Unfollow

只读 Read-Only

分配 Allocate

迁移 Migrate

分片压缩 Shrink

强制合并 Force Merge


Cold阶段


设置优先级 Set Priority

取消跟随 Unfollow

只读 Read-Only

可搜索快照 Searchable Snapshot

分配 Allocate

迁移 Migrate

强制合并 Force Merge


Frozen阶段


可搜索快照 Searchable Snapshot


Delete阶段


等待快照 Wait For Snapshot

删除 Delete

总结


本节主要介绍了ES中索引生命周期管理ILM的相关功能和使用场景。

1、索引生命周期管理的概念以及使用场景。

2、索引生命周期的5个阶段,Hot—>Warm—>Cold—>Frozen—>Delete。

3、可以通过定义索引生命周期策略(Index lifecycle policies)来实现索引生命周期的管理。

4、索引在每个生命周期阶段,可以执行的相关动作。

目录
相关文章
|
运维 Linux Go
grafana 8.x配置日报定时发送配置及踩坑经过
grafana 8.x配置日报定时发送配置及踩坑经过
2062 0
grafana 8.x配置日报定时发送配置及踩坑经过
|
机器人
钉钉markdown
钉钉markdown
2066 0
|
存储 弹性计算 监控
企业法务诉讼系统的建设方案
企业法务数字化迫在眉睫,传统管理方式难应复杂诉讼。构建统一诉讼系统,实现案件集中管控、内外高效协同、数据驱动决策与安全合规,助力企业风险防控与管理升级。
476 0
|
存储 监控 固态存储
elasticsearch索引生命周期管理(ILM):原理和实践
elasticsearch索引生命周期管理(ILM):原理和实践
|
存储 缓存 JSON
基于EFK的Kubernetes日志采集方案
在本篇文章中,您将学习 Kubernetes 集群日志中涉及的关键概念和工作流。
2724 0
基于EFK的Kubernetes日志采集方案
|
数据安全/隐私保护 计算机视觉
qss样式表笔记大全(三):可设置样式的窗口部件列表(中)(持续更新示例) 一
qss样式表笔记大全(三):可设置样式的窗口部件列表(中)(持续更新示例)
qss样式表笔记大全(三):可设置样式的窗口部件列表(中)(持续更新示例) 一
|
存储 缓存 监控
【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现
综上所述,构建一个基于FATFS/Littlefs文件系统的日志框架需要对文件系统的操作有深入理解,并以此为基础设计一套完整的日志处理机制。这样的框架不仅能够确保日志数据的完整性和系统的鲁棒性,同时还能够满足嵌入式系统对于性能和资源使用的严格要求。
902 4
|
数据采集 关系型数据库 MySQL
使用Apache Flink实现MySQL数据读取和写入的完整指南
使用Apache Flink实现MySQL数据读取和写入的完整指南
1684 0
使用Apache Flink实现MySQL数据读取和写入的完整指南
|
运维 监控
zabbix 触发器之count函数
zabbix监控中使用count函数,可以设置连续几次都异常才发出告警,确认多次以减少了很多误告警,提高了运维效率,这样一来,只要发出告警基本上就已经确定发生故障了。
|
安全 API Docker
索引生命周期管理ILM看完不懂你锤我
索引生命周期管理ILM看完不懂你锤我
602 0

热门文章

最新文章