当前位置: 首页 > news >正文

【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 策略?

ILMIndex 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 17 天。
  • 温 → 冷: 7 − 30 7-30 730天。

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 策略,可以实现索引的全生命周期自动化管理,显著降低运维成本,同时优化存储和查询性能。

相关文章:

  • AI大数据模型如何与thingsboard物联网结合
  • 浅谈量子计算:从实验室突破到产业落地的中国实践
  • opencv 可视化函数
  • ISO18436-2 CATII级振动分析师能力矩阵
  • LeetCode 热题 100 394. 字符串解码
  • MG影视登录解锁永久VIP会员 v8.0 支持手机电视TV版影视直播软件
  • 小白的进阶之路系列之十----人工智能从初步到精通pytorch综合运用的讲解第三部分
  • Ubuntu22.04 安装 ROS2 Humble
  • 嵌入式鸿蒙开发环境搭建操作方法与实现
  • Ubuntu上进行VS Code的配置
  • JDK21深度解密 Day 11:云原生环境中的JDK21应用
  • JVM——从JIT到AOT:JVM编译器的云原生演进之路
  • 微服务-Sentinel
  • LabVIEW准分子激光器智能控制系统
  • 神经网络与深度学习(第二章)
  • 可视化大屏通用模板Axure原型设计案例
  • Python 在金融中的应用- Part 1
  • HarmonyOS鸿蒙Taro跨端框架
  • React---day6、7
  • Go 语言 + Word 文档模板:WordZero 引擎如何让企业文档处理效率提升 300%?
  • 做网站 数据库/搜索引擎营销的优势和劣势
  • 建设电瓶车官方网站/网络营销专业是学什么的
  • 哪家网站建设最好/东莞做网站公司首选
  • 网站建设公司做销售好不好?/安阳企业网站优化外包
  • 信息门户网站制作/百度秒收录技术
  • 高端建材项目/广州营销优化