多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 分析与汇总结果 Elasticsearch聚合使您能够获取有关搜索结果的元信息,并回答诸如“德克萨斯州有多少个帐户持有人”之类的问题。或“田纳西州的平均帐户余额是多少?”您可以在一个请求中搜索文档,过滤命中并使用汇总分析结果。 例如,以下请求使用`terms`汇总将`bank`索引中的所有帐户按状态分组,并按降序返回帐户数量最多的十个州: ~~~ GET /bank/_search { "size": 0, "aggs": { "group_by_state": { "terms": { "field": "state.keyword" } } } } ~~~ 这个`buckets`响应中的是的值`state`字段中。该`doc_count`节目在每个州帐户数量。例如,您可以看到`ID`(爱达荷州)有27个帐户。因为请求set`size=0`,所以响应仅包含聚合结果。 ~~~ { "took": 29, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped" : 0, "failed": 0 }, "hits" : { "total" : { "value": 1000, "relation": "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "group_by_state" : { "doc_count_error_upper_bound": 20, "sum_other_doc_count": 770, "buckets" : [ { "key" : "ID", "doc_count" : 27 }, { "key" : "TX", "doc_count" : 27 }, { "key" : "AL", "doc_count" : 25 }, { "key" : "MD", "doc_count" : 25 }, { "key" : "TN", "doc_count" : 23 }, { "key" : "MA", "doc_count" : 21 }, { "key" : "NC", "doc_count" : 21 }, { "key" : "ND", "doc_count" : 21 }, { "key" : "ME", "doc_count" : 20 }, { "key" : "MO", "doc_count" : 20 } ] } } } ~~~ 您可以组合聚合以构建更复杂的数据汇总。例如,以下请求将一个`avg`聚合嵌套在先前的`group_by_state`聚合中,以计算每个状态的平均帐户余额。 ~~~ GET /bank/_search { "size": 0, "aggs": { "group_by_state": { "terms": { "field": "state.keyword" }, "aggs": { "average_balance": { "avg": { "field": "balance" } } } } } } ~~~ 您可以通过指定`terms`聚合内的顺序来使用嵌套聚合的结果进行排序,而不是按计数对结果进行排序: ~~~ GET /bank/_search { "size": 0, "aggs": { "group_by_state": { "terms": { "field": "state.keyword", "order": { "average_balance": "desc" } }, "aggs": { "average_balance": { "avg": { "field": "balance" } } } } } } ~~~ 除了这些基本的存储桶和指标聚合外,Elasticsearch还提供了专门的聚合,用于在多个字段上操作并分析特定类型的数据,例如日期,IP地址和地理数据。您还可以将单个聚合的结果馈送到管道聚合中,以进行进一步分析。 聚合提供的核心分析功能可启用高级功能,例如使用机器学习来检测异常。