Elastic不同data stream类型有什么区别?logs、metrics等类型是否可互换?
Elastic数据流三类类型核心差异
Elastic官方定义的三类数据流是针对不同观测场景做的定向优化,具体差异如下:
logs:面向日志观测场景设计,专门存储各类半结构化/非结构化的事件日志(如系统日志、应用运行日志、访问日志等)。默认字段映射支持文本分词检索,适配日志高吞吐写入、关键字查询的核心需求。metrics:面向指标观测场景设计,专门存储结构化时序数值数据(如CPU使用率、内存占用、接口QPS、业务统计数值等)。默认字段映射优先适配数值聚合查询,针对时序数值做定向存储优化。synthetics:面向主动拨测场景设计,专门存储合成探测类数据(如站点可用性探测结果、API拨测数据、前端体验监测数据等)。预定义了拨测场景专属的字段规范,适配主动监测数据的统计、告警需求。
logs与metrics的互换性及底层存储差异
互换性说明
功能层面可以强制混用,但绝对不建议。测试时查询无明显差异是因为数据量小、未触达各自的优化场景:
- 若将日志存入
metrics类型数据流,进行全文检索时会出现性能骤降,甚至因为默认未开启文本分词导致检索结果不符合预期 - 若将指标存入
logs类型数据流,大规模多维度聚合查询时耗时会高2~10倍,存储空间占用也会大幅上升
底层存储逻辑差异
二者底层都是基于Elasticsearch索引存储,但默认配置和定向优化完全不同:
- 字段映射规则不同:
logs默认给文本类字段(如message)配置text+keyword双类型,支持分词检索和精确匹配;metrics默认仅给数值字段开启doc_values,关闭不必要的全文索引,减少存储开销。 - 压缩编码策略不同:
metrics默认采用时序数值专属的压缩算法,相同数据量的指标数据比存在logs数据流中省30%~60%的存储空间;logs采用通用压缩策略,优先保障文本检索的效率。 - 生命周期(ILM)默认策略不同:
logs默认按天滚动分片,单分片阈值设为50GB,适配大体积日志的写入归档;metrics默认按小时滚动分片,单分片阈值设为10GB,适配高频小体积指标点的写入和快速聚合。
内容的提问来源于stack exchange,提问作者dmh
相关产品推荐
相关产品推荐

