【Elasticsearch】Index Lifecycle Management

server/2025/3/6 23:04:44/

Elasticsearch 的索引生命周期管理(Index Lifecycle Management,简称 ILM)是一种自动化管理索引生命周期的功能,旨在帮助用户根据索引的使用模式和数据价值,高效地管理和优化索引的存储、性能和成本。以下是关于 Elasticsearch 索引生命周期的详细说明:

---

1.索引生命周期的五个阶段

Elasticsearch 的 ILM 定义了五个主要阶段,每个阶段对应不同的索引使用模式和管理策略:

1.1 热(Hot)阶段

• 特点:索引处于活跃状态,频繁更新和查询。

• 适用场景:通常是最近创建的索引,包含最新的数据,需要快速响应查询。

• 典型操作:

• 设置高优先级。

• 执行滚动(Rollover)操作,当索引达到一定大小或时间后,自动创建新索引并切换写入。

• 可能会执行强制合并(Force Merge)以优化性能。

1.2 温(Warm)阶段

• 特点:索引不再更新,但仍然需要被查询。

• 适用场景:数据不再变化,但查询需求仍然存在。

• 典型操作:

• 设置为只读。

• 执行降采样(Downsample),减少数据粒度以节省存储。

• 可能会缩小(Shrink)索引,将索引从多个分片缩减到较少的分片以节省资源。

1.3 冷(Cold)阶段

• 特点:索引很少被查询,但仍需要保留以供搜索。

• 适用场景:历史数据,查询频率低但需要保留。

• 典型操作:

• 设置为只读。

• 使用可搜索快照(Searchable Snapshot)将索引数据存储到低成本存储中。

• 可能会进一步降采样或迁移数据。

1.4 冻结(Frozen)阶段

• 特点:索引极少见查询,查询速度可以很慢。

• 适用场景:非常旧的数据,几乎不被查询,但需要保留。

• 典型操作:

• 使用可搜索快照将数据存储到低成本存储中。

• 索引几乎不占用计算资源。

1.5 删除(Delete)阶段

• 特点:索引不再需要,可以被安全删除。

• 适用场景:数据已经过期或不再需要。

• 典型操作:

• 等待快照完成(如果需要备份)。

• 删除索引以释放存储空间。

---

2.生命周期策略(Lifecycle Policy)

生命周期策略定义了索引在不同阶段的行为和转换条件。策略包括以下内容:

• 阶段定义:指定索引将经过哪些阶段。

• 操作定义:在每个阶段执行哪些操作(如滚动、缩小、设置为只读等)。

• 转换条件:基于索引的年龄、大小或其他条件,决定何时从一个阶段转移到下一个阶段。

2.1 阶段转换的条件

• 最小年龄(min_age):索引必须达到指定的最小年龄才能进入下一个阶段。

• 操作完成:当前阶段的所有操作必须完成。

• 年龄计算:如果索引发生滚动,`min_age`是从滚动时间开始计算的,而不是从创建时间开始。

---

3.ILM 的工作原理

• 定期检查:ILM 定期运行(由`indices.lifecycle.poll_interval`配置),检查索引是否满足策略条件。

• 操作执行:如果索引满足条件,ILM 会执行相应阶段的操作。某些操作可能需要多次运行才能完成。

• 缓存机制:ILM 会在索引元数据中缓存阶段定义,以防止策略更新导致索引进入无法退出的状态。

---

4.ILM 的应用场景

• 时间序列数据:如日志、监控数据等,随着时间推移,数据的查询频率逐渐降低。

• 成本优化:通过将旧数据迁移到低成本存储(如可搜索快照)来节省存储成本。

• 性能优化:通过缩小、降采样等操作,减少存储和计算资源的占用。

---

5.ILM 的限制和注意事项

• 集群健康:如果集群状态为黄色(存在未分配的分片),ILM 仍然可以执行阶段转换,但可能会导致意外的副作用。

• 权限问题:ILM 以最后更新策略的用户身份运行,需要确保该用户有足够的权限。

• 操作顺序:ILM 按照定义的顺序执行操作,某些操作可能需要多次运行才能完成。

---

通过 ILM,Elasticsearch 提供了一种灵活且高效的方式来管理索引的生命周期,帮助用户根据数据的价值和使用模式,优化存储、性能和成本。

索引的生命周期策略指定了哪些阶段适用、每个阶段执行哪些操作以及何时在阶段之间转换。您可以在创建索引时手动应用生命周期策略。对于时间序列索引,需要将生命周期策略与用于创建时间序列中新索引的索引模板相关联。当索引发生滚动时,手动应用的策略不会自动应用于新索引。

如果您使用了 Elasticsearch 的安全功能,ILM 将以最后更新策略的用户身份执行操作。

ILM 只具有在最后策略更新时分配给该用户的权限。ILM 根据索引的年龄将索引移至下一个生命周期阶段。

要控制这些转换的时机,您需要为每个阶段设置一个最小年龄。要使索引进入下一个阶段,当前阶段的所有操作必须完成,并且索引的年龄必须大于下一个阶段的最小年龄。

配置的最小年龄必须在后续阶段之间递增,例如,“温”阶段的最小年龄为 10 天,则只能跟一个最小年龄未设置或 ≥10 天的“冷”阶段。最小年龄默认为零,这会导致 ILM 在当前阶段的所有操作完成后立即将索引移至下一个阶段。

如果索引已经滚动,那么  min_age  值是从索引滚动的时间开始计算的,而不是从索引创建时间开始计算。了解更多信息。

如果索引有未分配的分片且集群健康状态为黄色,索引仍然可以根据其索引生命周期管理策略进入下一个阶段。

然而,由于 Elasticsearch 只能在绿色集群上执行某些清理任务,因此可能会出现意外的副作用。为了避免磁盘使用量增加和可靠性问题,请及时解决任何集群健康问题。

ILM 控制每个阶段中操作的执行顺序以及执行每个操作所需的索引操作步骤。当索引进入一个阶段时,ILM 会将阶段定义缓存到索引元数据中。这确保了策略更新不会使索引进入一个无法退出该阶段的状态。

如果可以安全应用更改,ILM 会更新缓存的阶段定义;如果不能,则继续使用缓存的定义执行阶段操作。

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

如果在某个点上无法安全地进入下一步,则执行停止。下次 ILM 运行时,ILM 会从上次停止的地方继续执行。这意味着即使  indices.lifecycle.poll_interval  设置为 10 分钟,索引符合滚动条件,也可能需要 20 分钟才能完成滚动。ILM 在每个阶段支持以下操作。ILM 按列出的顺序执行操作。

热(Hot):

设置优先级

取消跟随

滚动

设置为只读

降采样

缩小

强制合并

可搜索快照

温(Warm):

设置优先级

取消跟随

设置为只读

降采样

分配

迁移

缩小

强制合并

冷(Cold):

设置优先级

取消跟随

设置为只读

降采样

可搜索快照

分配迁移

冻结(Frozen):

取消跟随

可搜索快照

删除(Delete):

等待快照

删除

 


http://www.ppmy.cn/server/172993.html

相关文章

软件工程---净室软件工程

净室软件工程是一种软件开发方法,旨在通过形式化的数据和严格的测试来提高软件的可靠性和减少缺陷的数量。它的核心思想是在软件开发过程中最小化或消除软件缺陷,从而提高软件的质量和可靠性。这种方法强调在软件生命周期的早期阶段使用形式化方法进行规…

CMake学习笔记(一):工程的新建和如何将源文件生成二进制文件

cmake是我们在工作过程中比较常见的一个工具,该系列文章是自己用来学习的笔记。目前只是记录下自己学习cmake的过程中的一些重要的知识点,其是以项目需求为导向并非完整的cmake的学习路线和系统,同样也并非适合所有的人。 1.生成一个可执行文…

国产化替换案例:CACTER邮件网关为Groupwise系统加固邮件安全防线

电子邮件作为企业信息流转的命脉,承载着商业机密与客户数据。然而,网络攻击手段日益复杂,钓鱼邮件等威胁正快速侵蚀企业安全防线。据《2024年第四季度企业邮箱安全性研究报告》显示,2024年Q4企业邮箱用户遭遇的钓鱼邮件数量激增至…

Qt:文件

目录 前言 QFile的使用 QFileInfo的使用 前言 关于文件相关操作&#xff0c;之前也学习过很多&#xff1a; C语言中 fopen 打开文件 fread fwrite 读写文件 fclose 关闭文件C中 fstream 打开文件 << >> 读写文件 close 关闭文件Linux中 open 打开文件 read wr…

如何配置虚拟机连接finalshell并克隆

在VMware中我们在后期的学习中是必须要用到fianlshell这个工具&#xff0c;首先在我们在VMware中将虚拟机的IP全部完成后&#xff0c;可以开始克隆 了。 找到自己的虚拟机&#xff0c;先关闭虚拟机&#xff0c;然后右键管理&#xff0c;找到克隆&#xff0c;在一步步的下一步后…

[Computer Vision]实验六:视差估计

目录 一、实验内容 二、实验过程 2.1.1 test.py文件 2.1.2 test.py文件结果与分析 2.2.1 文件代码 2.2.2 结果与分析 一、实验内容 给定左右相机图片&#xff0c;估算图片的视差/深度&#xff1b;体现极线校正&#xff08;例如打印前后极线对&#xff09;、同名点匹配…

Java进阶:Dubbo

分布式RPC框架Apache Dubbo 1. 软件架构的演进过程 软件架构的发展经历了由单体架构、垂直架构、SOA架构到微服务架构的演进过程&#xff0c;下面我们分别了解一下这几个架构。 1.1 单体架构 架构说明&#xff1a; 全部功能集中在一个项目内&#xff08;All in one&#xf…

kafka小白基础知识

一、Kafka 入门 &#xff08;一&#xff09;Kafka 简介 Kafka 是一个开源的分布式流处理平台&#xff0c;最初由 LinkedIn 开发&#xff0c;后来贡献给了 Apache 软件基金会。它被设计用于处理实时数据流&#xff0c;具有高吞吐量、可扩展性、持久性和容错性等特点。Kafka 主要…