【Elasticsearch】ILM(Index Lifecycle Management)策略详解
ILM(Index Lifecycle Management)策略详解
- 1.什么是 ILM 策略?
- 2.ILM 解决的核心业务问题
- 3.ILM 生命周期阶段
- 3.1 Hot(热阶段)
- 3.2 Warm(温阶段)
- 3.3 Cold(冷阶段)
- 3.4 Delete(删除阶段)
- 4.如何创建 ILM 策略
- 4.1 基本 ILM 策略示例
- 5.ILM 核心操作详解
- 5.1 Rollover(滚动更新)
- 5.2 Shrink(收缩索引)
- 5.3 Force Merge(强制合并段)
- 5.4 Freeze(冻结索引)
- 6.实际应用案例
- 案例 1:日志管理系统
- 案例 2:电商订单数据
- 7.使用注意事项
- 7.1 节点属性配置
- 7.2 监控 ILM 执行
- 7.3 常见问题处理
- 7.4 性能考虑
- 7.5 与索引模板结合
- 7.6 测试策略
- 8.最佳实践
- 8.1 合理设置阶段过渡时间
- 8.2 优先级设置
- 8.3 结合快照备份
- 8.4 容量规划
- 8.5 版本兼容性
1.什么是 ILM 策略?
ILM
(Index Lifecycle Management
,索引生命周期管理)是 Elasticsearch 提供的一种自动化管理索引生命周期的机制。它允许用户根据预先定义的策略,自动执行索引的 滚动更新(rollover
)、分片分配、冻结和删除 等操作,无需人工干预。
2.ILM 解决的核心业务问题
- 自动化索引管理:减少人工维护成本。
- 存储优化:自动将旧数据迁移到成本更低的存储层。
- 性能优化:根据数据热度自动调整资源配置。
- 数据保留合规:自动清理过期数据。
- 资源利用率提升:合理分配集群资源。
3.ILM 生命周期阶段
ILM 策略包含四个可配置的阶段。
3.1 Hot(热阶段)
- 索引正在被频繁写入和查询。
- 需要高性能资源配置。
- 通常配置滚动更新(
rollover
)条件。
3.2 Warm(温阶段)
- 索引不再被写入,但仍被频繁查询。
- 可以降低资源配置。
- 可执行分片合并(
forcemerge
)、只读设置等。
3.3 Cold(冷阶段)
- 索引很少被查询,但需要保留。
- 可以转移到更经济的存储。
- 可冻结索引(
freeze
)以减少资源占用。
3.4 Delete(删除阶段)
- 索引达到保留期限。
- 自动删除释放空间。
4.如何创建 ILM 策略
4.1 基本 ILM 策略示例
PUT /_ilm/policy/logs_policy
{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_size": "50GB","max_age": "30d","max_docs": 10000000},"set_priority": {"priority": 100}}},"warm": {"min_age": "7d","actions": {"forcemerge": {"max_num_segments": 1},"allocate": {"number_of_replicas": 1,"require": {"data": "warm"}},"set_priority": {"priority": 50}}},"cold": {"min_age": "30d","actions": {"allocate": {"require": {"data": "cold"}},"freeze": {},"set_priority": {"priority": 0}}},"delete": {"min_age": "90d","actions": {"delete": {}}}}}
}
5.ILM 核心操作详解
5.1 Rollover(滚动更新)
作用:当索引达到指定条件时自动创建新索引。
常见触发条件:
max_age
:自索引创建后的最长时间。max_docs
:索引包含的最大文档数。max_size
:索引的最大主分片大小。
使用示例:
PUT /_ilm/policy/my_rollover_policy
{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_age": "7d","max_size": "50GB"}}}}}
}
5.2 Shrink(收缩索引)
作用:减少主分片数量。
适用场景:
- 索引不再写入后。
- 减少分片数以节省资源。
示例配置:
"warm": {"actions": {"shrink": {"number_of_shards": 1}}
}
5.3 Force Merge(强制合并段)
作用:合并分段以减少资源占用和提高查询性能.
示例配置:
"warm": {"actions": {"forcemerge": {"max_num_segments": 1}}
}
5.4 Freeze(冻结索引)
作用:将索引设为只读并减少内存占用。
示例配置:
"cold": {"actions": {"freeze": {}}
}
6.实际应用案例
案例 1:日志管理系统
需求:
- 热数据保留 7 7 7 天,高性能存储。
- 温数据保留 30 30 30 天,标准存储。
- 冷数据保留 90 90 90 天,低成本存储。
- 最终自动删除。
ILM 策略:
PUT /_ilm/policy/logs_management_policy_v2
{"policy": {"phases": {"hot": {"min_age": "0ms", # 明确从索引创建开始"actions": {"rollover": {"max_age": "7d", # 更合理的rollover周期"max_size": "50GB","max_docs": 10000000},"set_priority": {"priority": 100}}},"warm": {"min_age": "7d", # 从索引创建后7天进入warm"actions": {"forcemerge": {"max_num_segments": 1},"allocate": {"number_of_replicas": 1,"require": {"data": "warm" # 明确要求warm节点}},"set_priority": {"priority": 50}}},"cold": {"min_age": "30d", # 从创建后30天进入cold"actions": {"allocate": {"require": {"data": "cold" # 明确要求cold节点}},"freeze": {}, # 冻结索引节省资源"set_priority": {"priority": 0}}},"delete": {"min_age": "90d", # 从创建后90天删除"actions": {"delete": {"delete_searchable_snapshot": true # 可选:删除前检查快照}}}}}
}
配套的索引模板示例
PUT /_index_template/logs_template
{"index_patterns": ["logs-*"],"template": {"settings": {"number_of_shards": 3,"number_of_replicas": 1,"index.lifecycle.name": "logs_management_policy_v2","index.lifecycle.rollover_alias": "logs"},"mappings": {"properties": {"@timestamp": { "type": "date" },"log_level": { "type": "keyword" },"message": { "type": "text" }}}}
}
案例 2:电商订单数据
需求:
- 热阶段:处理当前订单(高优先级)。
- 温阶段:近期订单可查询(优化存储)。
- 冷阶段:归档订单(低成本存储)。
- 3 3 3 年后自动删除。
ILM 策略:
PUT /_ilm/policy/orders_policy
{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_age": "7d"},"set_priority": {"priority": 100}}},"warm": {"min_age": "30d","actions": {"allocate": {"require": {"data": "warm"}}}},"cold": {"min_age": "365d","actions": {"allocate": {"require": {"data": "cold"}}}},"delete": {"min_age": "1095d", // 3年"actions": {"delete": {}}}}}
}
7.使用注意事项
7.1 节点属性配置
- 需要为温冷数据节点配置属性
# 在elasticsearch.yml中
node.attr.data: warm
# 或
node.attr.data: cold
7.2 监控 ILM 执行
GET /_ilm/status
GET /_ilm/policy/logs_policy
GET logs-*/_ilm/explain
7.3 常见问题处理
- 策略不生效:检查
min_age
设置(默认是上次rollover
后时间)。 - 阶段卡住:使用
GET _ilm/explain
诊断。 - 权限问题:确保用户有足够权限。
7.4 性能考虑
- Force merge 操作资源消耗大,应在低峰期执行。
- 避免过于频繁的
rollover
(会产生大量小索引)。
7.5 与索引模板结合
PUT /_index_template/logs_template
{"index_patterns": ["logs-*"],"template": {"settings": {"index.lifecycle.name": "logs_policy","index.lifecycle.rollover_alias": "logs"}}
}
7.6 测试策略
POST /_ilm/move/logs-000001
{"current_step": {"phase": "new","action": "complete","name": "complete"},"next_step": {"phase": "hot","action": "rollover","name": "attempt-rollover"}
}
8.最佳实践
8.1 合理设置阶段过渡时间
- 根据业务访问模式设置
min_age
。 - 热 → 温:通常 1 − 7 1-7 1−7 天。
- 温 → 冷: 7 − 30 7-30 7−30天。
8.2 优先级设置
"set_priority": {"priority": 100 // 热阶段最高
}
8.3 结合快照备份
- 重要数据在删除前应考虑备份。
- 可以使用 SLM(
Snapshot Lifecycle Management
)。
8.4 容量规划
- 根据
rollover
条件预估索引数量。 - 监控各阶段存储使用情况。
8.5 版本兼容性
- ILM 在 Elasticsearch 6.6 + 6.6+ 6.6+ 可用。
- 7. x 7.x 7.x 后功能更完善。
通过合理配置 ILM 策略,可以实现索引的全生命周期自动化管理,显著降低运维成本,同时优化存储和查询性能。
相关文章:

【Elasticsearch】ILM(Index Lifecycle Management)策略详解
ILM(Index Lifecycle Management)策略详解 1.什么是 ILM 策略?2.ILM 解决的核心业务问题3.ILM 生命周期阶段3.1 Hot(热阶段)3.2 Warm(温阶段)3.3 Cold(冷阶段)3.4 Delete…...

linux 后记
Linux Server 下载一个Server的版本,就是那种只有命令行的 学会这个就可以去租一个aliyun服务器,挺便宜的 如果在aliyun买服务器的话就不用管镜像源 但是如果是自己的虚拟机就必须设置镜像源,上网搜索阿里的镜像源,然后手动输入&…...

【笔记】在 MSYS2 MINGW64 环境中安装构建工具链(CMake、GCC、Make)
📝 在 MSYS2 MINGW64 环境中安装构建工具链(CMake、GCC、Make) ✅ 目标说明 记录在 MSYS2 的 MINGW64 工具链环境中,成功安装用于 C/C 构建的常用开发工具。 包括: GCC 编译器Make 构建系统CMake 跨平台构建工具基础开…...

PyTorch -TensorBoard的使用 (一)
设置环境 新建python文件 .py 安装Tensorboard 在终端进行安装 显示安装成功 两个logs,出现这种情况怎么解决 所有的logs文件删掉delete,重新运行 add_image 不满足要求 Opencv-numpy 安装Opencv add_image 用法示例 (500,375&am…...

Redis最佳实践——性能优化技巧之数据结构选择
Redis在电商应用中的数据结构选择与性能优化技巧 一、电商核心场景与数据结构选型矩阵 应用场景推荐数据结构内存占用读写复杂度典型操作商品详情缓存Hash低O(1)HGETALL, HMSET购物车管理Hash中O(1)HINCRBY, HDEL用户会话管理Hash低O(1)HSETEX, HGET商品分类目录Sorted Set高O…...

网络安全方向在校生有哪些证书适合考取?
工作7年得出结论:网络安全,考任何证书都没有用,实力才是根本。我是2021年考的 CISSP,报了培训班,花了1万一千块钱,签的保障班还是服务班不记得了,大概意思就是你放心去考,考不过可以…...

从0开始学习R语言--Day14--贝叶斯统计与结构方程模型
贝叶斯统计 在很多时候,我们经常会看到在统计分析中出现很多反直觉的结论,比如假如有一种病,人群中的患病率为1%,患者真患病时,检测结果为阳性的概率是99%,如果没有,则检测结果为阳性的概率是5…...
02-BTC-密码学原理 对hash算法如果出现漏洞的思考
如果比特币中某个哈希函数的抗碰撞性出现了漏洞怎么办,怎么补救? 答:(1)攻击场景: 伪造交易:攻击者可构造两个不同的交易(如正常交易和恶意双花交易)具有相同的TxID&…...

[Python] 如何使用 Python 调用 Dify 工作流服务实现自动化翻译
在实际项目中,自动化工作流服务可以大大简化复杂任务的处理流程。本文将介绍如何通过 Python 脚本调用 Dify 提供的工作流 API,实现文本翻译的自动化操作。该流程包括设置 API 接口、构造请求体并处理返回结果。 一、背景介绍:什么是 Dify 工作流服务? Dify 是一款支持多种…...
分布式微服务系统架构第142集:全栈开发
加群联系作者vx:xiaoda0423 仓库地址:https://webvueblog.github.io/JavaPlusDoc/ https://1024bat.cn/ https://github.com/webVueBlog/fastapi_plus https://webvueblog.github.io/JavaPlusDoc/ /*** 本地启动解决跨域问题* 打包发布请注释该类&#…...

PTA-根据已有类Worker,使用LinkedList编写一个WorkerList类,实现计算所有工人总工资的功能。
目录 1.问题描述 2.函数接口定义: 3.裁判测试程序样例: 4.输入和输出样例 输入样例: 输出样例: 5.实现代码 1.问题描述 Main类:在main方法中,调用constructWorkerList方法构建一个Worker对象链表…...
文档整合自动化
主要功能是按照JSON文件(Sort.json)中指定的顺序合并多个Word文档(.docx),并清除文档中的所有超链接。最终输出合并后的文档名为"sorted_按章节顺序.docx"。 主要分为几个部分: 初始化配置 定…...

微软markitdown PDF/WORD/HTML文档转Markdown格式软件整合包下载
本次和大家分享另一个微软发布的非常热门的文件文档转Markdown格式文档的软件markitdown,软件可以将PDF,word,ppt,Excel等十几种格式文档转换为markdown格式文档,我基于当前最新0.1.2版本制作了免安装一键启动整合包。…...
科普:Linux `su` 切换用户后出现 `$` 提示符,如何排查和解决?
科普:Linux su 切换用户后出现 $ 提示符,如何排查和解决? 在 Linux 系统管理中,su(Switch User)命令用于切换用户身份。正常情况下,从 root 切换到普通用户时,提示符会从 # 变成 $&…...

BayesFlow:基于神经网络的摊销贝叶斯推断框架
贝叶斯推断为不确定性条件下的推理、复杂系统建模以及基于观测数据的预测提供了严谨且功能强大的理论框架。尽管贝叶斯建模在理论上具有优雅性,但在实际应用中经常面临显著的计算挑战:后验分布通常缺乏解析解,模型验证和比较需要进行重复的推…...
NodeJS全栈开发面试题讲解——P9性能优化(Node.js 高级)
✅ 9.1 Node.js 的性能瓶颈一般出在哪?如何排查? Node.js 单线程 异步模型,瓶颈常出现在: 阻塞操作(如:同步 I/O、CPU 密集型计算) 数据库慢查询 / 索引失效 外部接口慢响应 大量并发请求导…...
NVMe IP现状扫盲
SSD优势 与机械硬盘(Hard Disk Driver, HDD)相比,基于Flash的SSD具有更快的数据随机访问速度、更快的传输速率和更低的功耗优势,已经被广泛应用于各种计算领域和存储系统。SSD最初遵循为HDD设计的现有主机接口协议,例…...
5G-A时代与p2p
5G-A时代正在走来,那么对P2P的影响有多大。 5G-A作为5G向6G过渡的关键技术,将数据下载速率从千兆提升至万兆,上行速率从百兆提升至千兆,时延降至毫秒级。这种网络性能的跨越式提升,为P2P提供了更强大的底层支撑&#x…...

基于FPGA的DES加解密系统verilog实现,包含testbench和开发板硬件测试
目录 1.课题概述 2.系统测试效果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于FPGA的DES加解密系统verilog实现,包含testbench和开发板硬件测试。输入待加密数据,密钥,输出加密数据,然后通过解密模块输出解密后的原…...
基于生产-消费模式,使用Channel进行文件传输(Tcp方式)
Client端: #region 多文件传输 public class FileMetadata {public string FileName { get; set; }public long FileSize { get; set; } }class Program {const int PORT 8888;const int BUFFER_SIZE 60 * 1024 * 1024;//15s-50 25s-64 33s-32 27s-50 31s-40 25…...
tortoisegit 使用rebase修改历史提交
在 TortoiseGit 中使用 rebase 修改历史提交(如修改提交信息、合并提交或删除提交)的步骤如下: --- ### **一、修改最近一次提交** 1. **操作**: - 右键项目 → **TortoiseGit** → **提交(C)** - 勾选 **"Amend…...

Python----目标检测(《用于精确目标检测和语义分割的丰富特征层次结构》和R-CNN)
一、《用于精确目标检测和语义分割的丰富特征层次结构》 1.1、基本信息 原文标题:Rich feature hierarchies for accurate object detection and semantic segmentation 中文译名:用于精确目标检测与语义分割的丰富特征层次结构 版本:第5版技…...
Ansible 进阶 - Roles 与 Inventory 的高效组织
Ansible 进阶 - Roles 与 Inventory 的高效组织 如果说 Playbook 是一份完整的“菜谱”,那么 Role (角色) 就可以被看作是制作这道菜(或一桌菜)所需的标准化“备料包”或“半成品组件”。例如,我们可以有一个“Nginx Web 服务器安装配置 Role”、“MySQL 数据库基础设置 Ro…...

极简以太彩光网络解决方案4.0正式发布,“彩光”重构园区网络极简之道
5月28日下午,锐捷网络在京举办以“光,本该如此‘简单’”为主题的发布会,正式发布极简以太彩光网络解决方案4.0。作为“彩光”方案的全新进化版本,极简以太彩光4.0从用户需求出发,聚焦场景洞察,开启了一场从底层基因出发的极简革命,通过架构、部署、运维等多维度的创新升级,以强…...

国芯思辰| 霍尔电流传感器AH811为蓄电池负载检测系统安全护航
在电动车、储能电站、不间断电源(UPS)等设备中,蓄电池作为关键的储能单元,其运行状态直接关系到设备的稳定性和使用寿命。而准确监测蓄电池的负载情况,是保障其安全、高效运行的关键。霍尔电流传感器 AH811凭借独特的技…...

TortoiseSVN账号切换
SVN登录配置及账号切换 本文主要为了解答svn客户端如何进行账号登录及切换不同权限账号的方式。 一、环境准备与客户端安装 安装TortoiseSVN客户端 下载地址:TortoiseSVN官网 安装步骤: 双击安装包,按向导完成安装后&#x…...

2025年05月28日Github流行趋势
项目名称:agenticSeek 项目地址url:https://github.com/Fosowl/agenticSeek项目语言:Python历史star数:10352今日star数:2444项目维护者:Fosowl, steveh8758, klimentij, ganeshnikhil, apps/copilot-pull-…...
精益数据分析(91/126):商业模式与阶段匹配的指标体系构建
精益数据分析(91/126):商业模式与阶段匹配的指标体系构建 在创业的不同阶段,企业面临的核心问题与目标差异显著,这就要求我们依据商业模式和所处阶段,动态调整关键指标体系。今天,我们将深入解…...

篇章五 数据结构——链表(一)
目录 1.ArrayList的缺陷 2. 链表 2.1 链表的概念及结构 2.2 链表结构 1. 单向或者双向 2.带头或者不带头 3.循环或者非循环 2.3 链表的实现 1.完整代码 2.图解 3.显示方法 4.链表大小 5. 链表是否存在 key 值 6.头插法 7.尾插法 8.中间插入 9.删除key值节点 10.…...
一文清晰理解目标检测指标计算
一、核心概念 1.交并比IoU 预测边界框与真实边界框区域的重叠比,取值范围为[0,1] 设预测边界框为,真实边界框为 公式: IoU计算为两个边界框交集面积与并集面积之比,图示如下 IoU值越高,表示预测边界框与真实边界框的对…...