Elasticsearch 聚合分析全解析
1. 选择重要术语
在 Elasticsearch 中,计算重要术语时,会对比两组数据中术语流行度的显著变化,即前景集和背景集。前景集是查询返回的数据,背景集是索引中的数据。例如,某个术语在一百万条索引文档中仅存在于 10 篇文档,但在查询返回的 10 篇文档中就出现了 5 篇,那么这个术语就非常重要,值得关注。
以 Richard 的评分数据为例,他从评审那里得到了三个等级的评价:差三次、中一次、好一次。在匹配查询的五篇文档中,“差”这个值出现了三次。在整个索引的 12 篇文档中,“差”这个等级出现在 3 篇文档中(即bg_count属性值),占比 25%;而在查询匹配的五篇文档中,“差”出现了三次,占比 60%。可见,“差”这个等级的流行度变化显著,因此 Elasticsearch 在significant_terms聚合结果中返回了它。
1.1 多值分析
significant_terms聚合可以嵌套使用,为我们提供强大的数据关联分析能力。例如,我们想为每个实习生找出显著的评分等级,可以将significant_terms聚合嵌套在terms聚合中。查询示例如下:
curl -XGET 'localhost:9200/interns/_search?size=0&pretty' -d '{ "aggregations" : { "grades" : {