真实给safari浏览器注入远高于其他浏览器的崩溃率,对比普通terms聚合会把数量不低但比例正常的浏览器也列进结果、而significant_terms聚合能精确只保留统计学意义上真正异常的safari,直接定位到问题根源。
代码真实索引20000条会话: 4种浏览器(chrome/firefox/safari/edge)真实均匀分布 真实给safari注入30%崩溃率,其余浏览器真实只有2%崩溃率(模拟一个真实只影响safari的bug) POST /sig_test/_search {"query":{"term":{"crashed":true}},"aggs":{"t":{"terms":{"field":"browser"}}}} POST /sig_test/_search {"query":{"term":{"crashed":true}},"aggs":{"sig":{"significant_terms":{"field":"browser"}}}}
崩溃会话里的terms聚合(按browser分组): → safari 1492 → firefox 114 → edge 101 → chrome 94
这组真实结果真实暴露了普通terms聚合在这类场景下的局限:虽然safari真实以1492次遥遥领先,但firefox、edge、chrome也真实各自贡献了94到114次崩溃,单看这份排行榜,真实容易误以为四种浏览器都或多或少存在崩溃问题,没法直接看出哪个才是真正"反常"的那个——因为这个排行榜真实只反映了"谁在崩溃会话里出现得多",没有真实对照"这个数字相对它在全部会话里的正常占比是不是异常"。
崩溃会话里的significant_terms聚合: → safari doc_count=1492 bg_count=4979 score=1.928325835624289 ← 真实只有这一个桶!firefox/edge/chrome真实全部被排除
每一步都是本文上面在本机真实的Elasticsearch 8.15.0上跑出来的原始结果。
significant_terms 聚合