随着时间推移,日志、监控指标等时序数据的价值密度会逐渐降低。一周前的数据需要毫秒级查询,而一年前的数据可能只需偶尔归档检索。如果在昂贵的 NVMe SSD 上存储所有历史数据,成本将难以承受。
索引生命周期管理(ILM) 是解决这一矛盾的核心机制。结合 INFINI Easysearch 强大的 ZSTD 压缩与分层存储能力,我们可以构建一套自动化的数据流转体系:让热数据“跑”在高性能节点,让冷数据“躺”在低成本存储上。
一、 冷热分离架构概览 #
在 Easysearch 集群中,我们通常将节点划分为不同的层级(Tiers):
- Hot 节点(热层):
- 硬件:高性能 CPU,NVMe SSD。
- 功能:负责当前数据的写入和高频查询。
- 数据状态:读写频繁,不压缩或轻度压缩。
- Warm 节点(温层/冷层):
- 硬件:大容量 HDD,高密度存储。
- 功能:存储只读的历史数据。
- 数据状态:只读,开启 ZSTD 高级压缩,段合并(Force Merge)。
- Delete(删除):
- 自动删除超过保留期限(如 365 天)的数据。
二、 环境准备:节点打标 #
首先,我们需要告诉 Easysearch 哪些节点是“热”的,哪些是“温”的。通过修改 easysearch.yml 配置文件来实现:
Hot 节点配置:
node.attr.data_type: hot
Warm 节点配置:
node.attr.data_type: warm
配置生效后,需重启节点。
三、 实战:定义 ILM 策略 #
我们将创建一个策略 logs_policy,它包含三个阶段:
- Hot:当索引主分片达到 50GB 或时间超过 1 天时,自动滚动(Rollover)生成新索引。
- Warm:索引滚动后立即触发,将数据移动到 Warm 节点,并进行 Force Merge 和缩容。
- Delete:数据创建 30 天后自动删除。
PUT /_ilm/policy/logs_policy
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_size": "50gb",
"max_age": "1d"
},
"set_priority": {
"priority": 100
}
}
},
"warm": {
"min_age": "0ms",
"actions": {
"set_priority": {
"priority": 50
},
"allocate": {
"require": {
"data_type": "warm"
}
}
}
},
"delete": {
"min_age": "30d",
"actions": {
"delete": {}
}
}
}
}
}
四、 绑定模板与初始化 #
策略定义好后,需要将其应用到索引模板中,确保新生成的索引自动继承该策略。
4.1 创建索引模板 #
这里我们结合了 Easysearch 的核心优势——ZSTD 压缩。建议在模板中开启 ZSTD,这样数据在整个生命周期中(特别是迁移到温层后)能获得极高的压缩比(通常比 LZ4 节省 40%-50% 空间)。
PUT /_index_template/logs_template
{
"index_patterns": [
"logs-*"
],
"template": {
"settings": {
"index.lifecycle.name": "logs_policy",
"index.lifecycle.rollover_alias": "logs",
"index.codec": "ZSTD",
"index.routing.allocation.require.data_type": "hot"
},
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
}
}
}
}
}
4.2 初始化第一个索引 #
ILM 的运行依赖于别名。我们需要手动创建第一个索引并配置写别名:
PUT /logs-000003
{
"aliases": {
"logs": {
"is_write_index": true
}
}
}
五、 Easysearch 深度优化建议 #
在标准的 ILM 流程之上,针对 INFINI Easysearch 的特性,我们有以下优化建议:
5.1 极致压缩与冷热分离 #
Easysearch 的 ZSTD 压缩算法在 Warm 阶段尤为重要。
- 传统方案:Warm 节点仅仅是磁盘便宜。
- Easysearch 方案:Warm 节点不仅磁盘便宜,通过 ZSTD 压缩,存储同样数据量所需的磁盘空间仅为传统方案的 50% - 60%。这意味着同样的硬件投入,Easysearch 可以多存储近一倍的历史数据。
5.2 结合“可搜索快照”进入 Frozen 阶段 #
对于访问频率极低(如审计合规要求保留 3 年)的数据,使用 Warm 节点仍然有些昂贵。
Easysearch 支持可搜索快照(Searchable Snapshots)。您可以将 ILM 的 Cold 阶段配置为将数据快照到 S3 或 MinIO 对象存储中,然后删除本地索引。
当需要查询时,Easysearch 可以直接挂载对象存储中的快照进行搜索,实现近乎无限且极低成本的存储扩展。
六、 运维与监控 #
如何确认 ILM 是否在正常工作?
GET /_ilm/explain/logs-*
总结 #
通过 INFINI Easysearch 的 ILM 功能,企业可以构建“自动驾驶”般的数据管理体验:
- 热数据在 SSD 上飞驰,保障业务实时性。
- 温数据自动迁移至 HDD 并通过 ZSTD 极致压缩,大幅降低存储 TCO。
- 过期数据自动清理或归档,规避合规风险。
这不仅解放了运维人员的双手,更让硬件资源的利用率达到了极致。





