📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

一、概述 #

在日志存储、指标监控等时序数据场景中,数据访问频率随时间推移而显著降低。Easysearch 提供了 Hot 和 Cold 两层数据分层策略,实现热数据高性能存储与冷数据低成本归档的平衡。

二、Hot 与 Cold 对比 #

维度Hot 阶段Cold 阶段
数据特征最新写入,频繁查询历史归档,极少查询
存储介质NVMe SSD / 高性能 SSDHDD / 大容量存储
写入支持支持写入只读
索引状态OpenClose
副本数高(保障可用性)低(1 或 0)

三、节点配置 #

Hot 和 Cold 节点通过标签区分:

# Hot 节点
node.attr.temp: hot

# Cold 节点
node.attr.temp: cold

或使用 box_type 属性:

# 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

配置示例 #

{
  "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

配置示例 #

{
  "cold": {
    "min_age": "30d",
    "actions": {
      "allocate": {
        "require": {
          "box_type": "cold"
        }
      },
      "close": {},
      "replica_count": {
        "number_of_replicas": 1
      }
    }
  }
}

Cold 节点规划建议 #

  • CPU:普通配置即可
  • 内存:中等配置
  • 存储:大容量 HDD
  • 网卡:千兆即可

六、完整策略示例 #

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": {}
        }
      }
    }
  }
}

七、索引模板配置 #

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 参数控制转换时间:

{
  "policy": {
    "phases": {
      "cold": {
        "min_age": "30d"
      }
    }
  }
}

九、最佳实践 #

1. 节点配比 #

根据热冷数据访问比例规划节点数量,常见配比为 Hot:Cold = 1:2 或 1:3

2. Rollover 策略 #

  • 单索引大小控制在 50GB 以内
  • 按天滚动,便于管理和查询

3. Close 索引 #

  • Cold 阶段关闭索引释放内存和文件句柄
  • 查询时自动打开,但会增加延迟

4. 监控要点 #

  • Hot 节点存储使用率(警戒线 80%)
  • Cold 节点存储容量规划
  • ILM 策略执行状态