es 根据字段group by
时间: 2023-08-22 17:03:58 浏览: 53
根据提供的引用内容,可以使用Elasticsearch的Composite Aggregation来根据字段进行分组。Composite Aggregation可以对多个字段进行分组,并且可以通过指定一个或多个桶排序规则来对结果进行排序。除此之外,还可以使用其他配置选项如size、after_key等来更好地控制查询结果。\[2\]
例如,可以使用以下查询来根据字段进行分组:
```
GET /index/_search
{
"_source": \["id"\],
"query": {
"bool": {
"filter": \[
{
"range": {
"createTime": {
"gte": "start",
"lte": "end"
}
}
}
\],
"must": \[
{
"match": {
"key": "val"
}
}
\]
}
},
"aggs": {
"id_count": {
"cardinality": {
"field": "id"
}
},
"group_by_id": {
"terms": {
"field": "id",
"order": {
"uid_count": "desc"
},
"size": 6000
},
"aggs": {
"uid_count": {
"cardinality": {
"field": "uid"
}
},
"uid_count_filter": {
"bucket_selector": {
"buckets_path": {
"uidCount": "uid_count"
},
"script": "params.uidCount > 1"
}
}
}
},
"stats_deviceId": {
"stats_bucket": {
"buckets_path": "group_by_id._count"
}
}
}
}
```
这个查询将根据字段"id"进行分组,并且对每个分组计算"uid"的唯一值数量。然后,使用"bucket_selector"过滤掉"uid"数量小于等于1的分组。最后,使用"stats_bucket"计算所有分组的总数。\[3\]
#### 引用[.reference_title]
- *1* [ES多个字段group by操作](https://blog.csdn.net/cainiao1412/article/details/120876972)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [elasticsearch 语句 group by多个字段](https://blog.csdn.net/qq_39264897/article/details/130596536)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]