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、索引在每个生命周期阶段,可以执行的相关动作。

目录
相关文章
|
1月前
|
JSON 监控 数据管理
【Elasticsearch专栏 12】深入探索:Elasticsearch使用索引生命周期管理(ILM)自动化删除旧数据
Elasticsearch的ILM功能允许用户定义策略,自动管理索引从创建到删除的生命周期。用户可以设置策略,根据索引年龄或大小自动删除旧数据,节省存储空间。通过应用ILM策略于索引模板,新索引将遵循预定义的生命周期。用户还可以监控ILM状态,确保策略按预期执行。使用ILM,用户可以高效地管理数据,确保旧数据及时删除,同时保持数据完整性和安全性。
|
存储 JSON 应用服务中间件
|
存储 JSON 安全
Elasticsearch索引生命周期管理方案
本文主要介绍Elasticsearch索引生命周期管理如何配置和使用
768 1
Elasticsearch索引生命周期管理方案
|
2月前
|
安全 API Docker
索引生命周期管理ILM看完不懂你锤我
索引生命周期管理ILM看完不懂你锤我
30 0
|
6月前
|
索引
如何在已创建的 es 索引中增加分片
如何在已创建的 es 索引中增加分片
75 0
|
7月前
|
存储 数据安全/隐私保护 Docker
ILM 索引生命周期管理
本场景主要介绍了如何通过 Index Lifecycle Management(索引生命周期管理,简称 ILM)管理 Elasticsearch 中的索引。
79 0
|
11月前
|
API 索引
白话Elasticsearch73_ES生产集群中的索引管理02
白话Elasticsearch73_ES生产集群中的索引管理02
61 0
|
存储 固态存储 数据挖掘
ES索引规划方案
《ES索引规划方案》是研发部门针对审计系统需求,对海量日志数据进行实时存储和查询的解决方案,经过不断完善整理成册,以供后续相关开发人员学习使用
216 0
ES索引规划方案
|
索引
Elastic: ILM与rollover的关系
两者本身是无关系的,是独立的两个知识点,并不存在一定要配置了其中一个,才能使用另外一个的情况。 只是说我们日常使用中,经常将两者配合起来使用。而当我们在ILM中开启了rollover后,流转到下一节点的min_age是在rollover触发后才开始计时的,也就是说如果我们在rollover中设置3分钟后rollover,而在warm节点的min_age设置了4分钟,那么索引创建后需要7分钟才会流转到warm节点
113 0
|
安全 数据可视化 测试技术
Elastic:集群相关知识点总结(一)数据流 Data Stream、索引生命周期 ILM、可搜索快照 searchable snapshots、跨集群搜索 CCS、跨集群复制 CCR
# 0.引言 集群管理是ES的核心重点,因此相关的知识点至关重要,本期主要针对数据流、索引生命周期、可搜索快照、跨集群搜索、跨集群复制进行讲解
254 0
Elastic:集群相关知识点总结(一)数据流 Data Stream、索引生命周期 ILM、可搜索快照 searchable snapshots、跨集群搜索 CCS、跨集群复制 CCR

热门文章

最新文章