Elasticsearch 日志存储
Elasticsearch 是 ELK Stack 中负责日志存储和检索的核心组件。相比传统的关系型数据库,Elasticsearch 的分布式架构和倒排索引机制,使其在日志存储场景下具有显著优势:支持TB级别的全文检索、毫秒级的查询响应、灵活的聚合分析能力。
日志存储对 Elasticsearch 的使用有其特殊性:写入量大(高 QPS)、查询频率相对低(故障时才查询)、关注的是近期数据(超过 30 天的日志很少被访问)。这些特点决定了日志场景的配置策略与通用搜索场景有所不同。
索引设计策略
日志场景下,索引设计是性能的关键。核心原则是按时间分索引,每天或每小时创建一个新索引。例如,logs-2026.04.09 表示 2026 年 4 月 9 日的日志。分索引的好处是:可以按时间范围快速定位数据、可以单独管理冷热数据、可以定期删除过期数据而不影响其他时间段的日志。
分片(Shard)数量的选择需要权衡:分片越多,查询可以并行处理,但每个分片的开销也越大;分片越少,单分片数据量越大,可能影响性能。经验公式是:单个分片的数据量控制在 30-50GB 以内。如果每天日志量是 100GB,设置 2-3 个主分片比较合理。
冷热数据分离
日志的热度分布通常符合「时间衰减」:最近 7 天的日志访问频率最高,7-30 天的数据偶尔查询,超过 30 天的数据几乎不被访问。Elasticsearch 的 ILM(Index Lifecycle Management)策略可以自动管理这个生命周期。
热节点(Hot Node)配置高性能 SSD,存储近期数据;温节点(Warm Node)配置普通磁盘,存储中期数据;冷节点(Cold Node)配置大容量低性能存储,存储归档数据。通过 ILM 策略,数据自动从热节点移动到温节点再到冷节点,存储成本随之降低。