日志每天几百 GB,如何设计 ES 的滚动索引、冷热分层、保留和删除策略?
我的判断
每天几百 GB 的日志用 data stream/rollover 控制 shard 大小,再按 hot-warm-cold-delete 生命周期迁移与删除。
我不会固定“每天一个索引”后就结束。写入速率变化时每天索引可能过大或产生小 shard,更稳妥是 rollover:当主 shard 达到目标大小、文档数或年龄就滚动新 backing index。分片数按单 shard 30~50GB 等目标和节点吞吐压测决定。
ILM 可以设计为:
- Hot:最近 3 天,快速磁盘,持续写入和高频查询;
- Warm:3~30 天,只读,forcemerge/shrink 后迁到容量型节点;
- Cold/Frozen:低频历史,使用更便宜存储或 searchable snapshot;
- Delete:超过合规保留期删除整个索引。
迁移前确认查询 SLA、恢复时间和合规要求。删除按索引完成,不逐文档 delete。监控 rollover 是否执行、shard 大小、迁移失败、磁盘水位和 snapshot 成功率。
冷热分层不是只贴 node attribute。查询路由、快照仓库、容量水位和故障恢复都要实际演练。