--- title: "Easysearch Hot vs Cold 数据分层策略详解" date: 2026-02-12 lastmod: 2026-02-12 description: "全面介绍 Easysearch Hot/Cold 数据分层策略,涵盖热冷数据分离、节点配置规划、ILM 生命周期管理、Rollover 滚动策略、索引模板配置等核心内容,帮助用户实现热数据高性能存储与冷数据低成本归档的平衡,提升集群整体性能和成本效益。" tags: ["数据分层", "性能优化", "存储优化"] summary: "一、概述 # 在日志存储、指标监控等时序数据场景中,数据访问频率随时间推移而显著降低。Easysearch 提供了 Hot 和 Cold 两层数据分层策略,实现热数据高性能存储与冷数据低成本归档的平衡。 二、Hot 与 Cold 对比 # 维度 Hot 阶段 Cold 阶段 数据特征 最新写入,频繁查询 历史归档,极少查询 存储介质 NVMe SSD / 高性能 SSD HDD / 大容量存储 写入支持 支持写入 只读 索引状态 Open Close 副本数 高(保障可用性) 低(1 或 0) 三、节点配置 # Hot 和 Cold 节点通过标签区分: # Hot 节点 node." --- ## 一、概述 在日志存储、指标监控等时序数据场景中,数据访问频率随时间推移而显著降低。Easysearch 提供了 Hot 和 Cold 两层数据分层策略,实现热数据高性能存储与冷数据低成本归档的平衡。 ## 二、Hot 与 Cold 对比 | 维度 | Hot 阶段 | Cold 阶段 | | ------------ | --------------------- | ------------------ | | **数据特征** | 最新写入,频繁查询 | 历史归档,极少查询 | | **存储介质** | NVMe SSD / 高性能 SSD | HDD / 大容量存储 | | **写入支持** | 支持写入 | 只读 | | **索引状态** | Open | Close | | **副本数** | 高(保障可用性) | 低(1 或 0) | ## 三、节点配置 Hot 和 Cold 节点通过标签区分: ```yaml # Hot 节点 node.attr.temp: hot # Cold 节点 node.attr.temp: cold ``` 或使用 `box_type` 属性: ```yaml # Hot 节点 node.attr.box_type: hot # Cold 节点 node.attr.box_type: cold ``` ## 四、Hot 阶段详解 ### 可用操作 | 操作 | 说明 | 参数 | | ---------------- | --------------- | --------------------------------- | | `rollover` | 索引滚动 | `max_size`, `max_docs`, `max_age` | | `index_priority` | 设置索引优先级 | `priority` | | `allocate` | 分配到 Hot 节点 | `require.box_type: hot` | ### 配置示例 ```json { "hot": { "min_age": "0ms", "actions": { "rollover": { "max_size": "50gb", "max_age": "1d" }, "index_priority": { "priority": 100 }, "allocate": { "require": { "box_type": "hot" } } } } } ``` ### Hot 节点规划建议 - CPU:高性能多核 - 内存:充裕,支撑高并发查询 - 存储:NVMe SSD,高 IOPS - 网卡:万兆或更高 ## 五、Cold 阶段详解 ### 可用操作 | 操作 | 说明 | 参数 | | --------------- | ------------------ | ------------------------ | | `close` | 关闭索引,释放内存 | - | | `readonly` | 设置只读 | - | | `allocate` | 分配到 Cold 节点 | `require.box_type: cold` | | `replica_count` | 调整副本数 | `number_of_replicas` | ### 配置示例 ```json { "cold": { "min_age": "30d", "actions": { "allocate": { "require": { "box_type": "cold" } }, "close": {}, "replica_count": { "number_of_replicas": 1 } } } } ``` ### Cold 节点规划建议 - CPU:普通配置即可 - 内存:中等配置 - 存储:大容量 HDD - 网卡:千兆即可 ## 六、完整策略示例 ```json PUT _ilm/policy/hot_cold_policy { "policy": { "phases": { "hot": { "min_age": "0ms", "actions": { "rollover": { "max_size": "50gb", "max_age": "1d" }, "index_priority": { "priority": 100 } } }, "cold": { "min_age": "30d", "actions": { "allocate": { "require": { "box_type": "cold" } }, "close": {} } } } } } ``` ## 七、索引模板配置 ```json PUT _index_template/hot_cold_template { "index_patterns": ["logs-*"], "template": { "settings": { "index.lifecycle.name": "hot_cold_policy", "index.lifecycle.rollover_alias": "logs-alias", "number_of_shards": 3, "number_of_replicas": 2 } } } ``` ## 八、Hot 阶段转 Cold 阶段时间选择 | 业务场景 | Hot → Cold 时间 | | -------- | --------------- | | 日志分析 | 7-30 天 | | 监控指标 | 14-60 天 | | 审计追踪 | 30-90 天 | | 合规归档 | 90-365 天 | 在策略中通过 `cold` 阶段的 `min_age` 参数控制转换时间: ```json { "policy": { "phases": { "cold": { "min_age": "30d" } } } } ``` ## 九、最佳实践 ### 1. 节点配比 根据热冷数据访问比例规划节点数量,常见配比为 Hot:Cold = 1:2 或 1:3 ### 2. Rollover 策略 - 单索引大小控制在 50GB 以内 - 按天滚动,便于管理和查询 ### 3. Close 索引 - Cold 阶段关闭索引释放内存和文件句柄 - 查询时自动打开,但会增加延迟 ### 4. 监控要点 - Hot 节点存储使用率(警戒线 80%) - Cold 节点存储容量规划 - ILM 策略执行状态