【Elasticsearch】ILM(Index Lifecycle Management)策略详解

news2025/6/5 12:34:13

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2397759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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…

[Python] 如何使用 Python 调用 Dify 工作流服务实现自动化翻译

在实际项目中,自动化工作流服务可以大大简化复杂任务的处理流程。本文将介绍如何通过 Python 脚本调用 Dify 提供的工作流 API,实现文本翻译的自动化操作。该流程包括设置 API 接口、构造请求体并处理返回结果。 一、背景介绍:什么是 Dify 工作流服务? Dify 是一款支持多种…

PTA-根据已有类Worker,使用LinkedList编写一个WorkerList类,实现计算所有工人总工资的功能。

目录 1.问题描述 2.函数接口定义: 3.裁判测试程序样例: 4.输入和输出样例 输入样例: 输出样例: 5.实现代码 1.问题描述 Main类:在main方法中,调用constructWorkerList方法构建一个Worker对象链表…

微软markitdown PDF/WORD/HTML文档转Markdown格式软件整合包下载

本次和大家分享另一个微软发布的非常热门的文件文档转Markdown格式文档的软件markitdown,软件可以将PDF,word,ppt,Excel等十几种格式文档转换为markdown格式文档,我基于当前最新0.1.2版本制作了免安装一键启动整合包。…

BayesFlow:基于神经网络的摊销贝叶斯推断框架

贝叶斯推断为不确定性条件下的推理、复杂系统建模以及基于观测数据的预测提供了严谨且功能强大的理论框架。尽管贝叶斯建模在理论上具有优雅性,但在实际应用中经常面临显著的计算挑战:后验分布通常缺乏解析解,模型验证和比较需要进行重复的推…

基于FPGA的DES加解密系统verilog实现,包含testbench和开发板硬件测试

目录 1.课题概述 2.系统测试效果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于FPGA的DES加解密系统verilog实现,包含testbench和开发板硬件测试。输入待加密数据,密钥,输出加密数据,然后通过解密模块输出解密后的原…

Python----目标检测(《用于精确目标检测和语义分割的丰富特征层次结构》和R-CNN)

一、《用于精确目标检测和语义分割的丰富特征层次结构》 1.1、基本信息 原文标题:Rich feature hierarchies for accurate object detection and semantic segmentation 中文译名:用于精确目标检测与语义分割的丰富特征层次结构 版本:第5版技…

极简以太彩光网络解决方案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-…

篇章五 数据结构——链表(一)

目录 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值越高,表示预测边界框与真实边界框的对…

Artificial Analysis2025年Q1人工智能发展六大趋势总结

2025年第一季度人工智能发展六大趋势总结 ——基于《Artificial Analysis 2025年Q1人工智能报告》 趋势一:AI持续进步,竞争格局白热化 前沿模型竞争加剧:OpenAI凭借“o4-mini(高智能版)”保持领先,但谷歌&…

高效管理 Python 项目的 UV 工具指南

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…