Elasticsearch 入门(三)- 使用聚合分析结果
Elasticsearch 聚合使你能够获取有关搜索结果的元信息,并回答诸如 “德克萨斯州有多少账户持有人?” 之类的问题。或 “田纳西州的平均账户余额是多少?” 你可以在一个请求中搜索文档,过滤匹配,并使用汇总分析结果。
例如,以下请求使用 terms
汇总将 bank
索引中的所有账户按状态分组,并按降序返回账户数量最多的十个州:
1 | $params = [ |
响应结果中的 buckets
是 state
字段的值,doc_count
是每一个州的账户数量。例如,你可以看到有 27 个账户在
ID
(Idaho)。因为请求设置了
size=0
,响应仅仅包含了聚合结果。
1 | { |
你可以组合聚合以构建更复杂的数据汇总。例如,以下请求将一个
avg
聚合嵌套在先前的 group_by_state
聚合中,以计算每个状态的平均账户余额。
1 | $params = [ |
结果:
1 | { |
你可以通过指定 terms
聚合内的顺序来使用嵌套聚合的结果进行排序,而不是按计数进行排序:
1 | $params = [ |
结果:
1 | { |
除了这些基本的聚合外,Elasticsearch 还提供了专门的聚合,用于在多个字段上操作并分析特定类型的数据,例如日期,IP 地址和地理数据。您还可以将单个聚合的结果发送到聚合管道中,以便进行进一步分析。
聚合提供的核心分析功能可启用高级功能,例如使用机器学习来检测异常。