Loading... > **聚合** > > 聚合虽然功能完全不同于搜索,但它使用相同的数据结构。这意味着聚合的执行速度很快并且就像搜索一样几乎是实时的。 > > 这对报告和仪表盘是非常强大的。你可以实时显示你的数据,而不是对你的数据进行汇总( *需要一周时间去运行的 Hadoop 任务* ),您的报告随着你的数据变化而变化,而不是预先计算的、过时的和不相关的。 > > 最后,聚合和搜索是一起的。 这意味着你可以在单个请求里同时对相同的数据进行搜索/过滤和分析。并且由于聚合是在用户搜索的上下文里计算的,你不只是显示四星酒店的数量,而是显示匹配查询条件的四星酒店的数量。 <!--more--> 说人话就是,**聚合等同于SQL中的分组+统计**,桶可以被套娃,因此桶里面可以嵌套多个桶或指标。 ```sql SELECT COUNT(color) FROM table GROUP BY color # GROUP BY color分组相当于桶(Buckets),满足特定条件的文档的集合 # COUNT(color)、SUM()、MAX()等统计方法相当于指标(Metrics),对桶内的文档进行统计计算 ``` ## 一、基础聚合 ```json # 女用户私信发帖数 GET risk_private_msg/_search { "size":0,// 不返回query命中的具体数据 "query": {// query查询 "term": { "senderSexType": { "value": 2 } } }, "aggs": {// 聚合查询 "searchUuidBucket": {// 桶名称 "terms": {// 桶类型 "field": "senderUuid",// 分桶字段 "size": 3 //桶个数,相当于top3,默认10 } } } } ``` ```json { "took" : 65,// 耗时 "timed_out" : false, "_shards" : { "total" : 5, // 分片数 "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1259, // query命中数 "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "searchUuidBucket" : {// 桶名称 "doc_count_error_upper_bound" : 17, // 被遗漏的term可能的最大值 "sum_other_doc_count" : 674, // 除了top3外剩下没有参与聚合的文档数(每个分片只聚合top3) "buckets" : [// top3的桶对应的senderUuid以及文档数 { "key" : "wfrefabaeabnkwbv", "doc_count" : 216 }, { "key" : "bggbejgiefdbhbcd", "doc_count" : 196 }, { "key" : "bggbbhdggbgfjfjd", "doc_count" : 173 } ] } } } ``` ## Nested类型聚合 ```json # 帖子分级审核对应的分级数量 GET review_task_2022/_search { "size": 0, "query": { "term": { "scene": { "value": "POST_QUALITY_LEVEL"// 帖子分级场景 } } }, "aggs": { "countQualityLevel": { "nested": { "path": "reviewTargetSpecialDTO" }, "aggs": { "byValue": { "terms": { "field": "reviewTargetSpecialDTO.qualityLevel" } } } } } } ``` Last modification:October 18, 2022 © Allow specification reprint Like 0 喵ฅฅ