es 排序 聚合统计_elasticsearch聚合统计出现次数
时间: 2023-09-07 08:11:04 浏览: 322
在 Elasticsearch 中,可以使用聚合(Aggregation)实现对文档进行聚合统计,其中包括出现次数的统计。下面是一个示例:
假设我们有一个名为 "sales" 的索引,包含以下文档:
```
{
"product": "A",
"price": 10.0,
"timestamp": "2021-08-01T10:00:00Z"
}
{
"product": "B",
"price": 15.0,
"timestamp": "2021-08-01T10:05:00Z"
}
{
"product": "A",
"price": 12.0,
"timestamp": "2021-08-01T10:10:00Z"
}
{
"product": "C",
"price": 20.0,
"timestamp": "2021-08-01T10:15:00Z"
}
{
"product": "A",
"price": 8.0,
"timestamp": "2021-08-01T10:20:00Z"
}
{
"product": "B",
"price": 18.0,
"timestamp": "2021-08-01T10:25:00Z"
}
```
现在,我们想要统计每个产品出现的次数,可以使用以下聚合查询:
```
{
"aggs": {
"products": {
"terms": {
"field": "product"
}
}
}
}
```
其中,"aggs" 是聚合查询的关键字,"products" 是我们给这个聚合起的名字,"terms" 表示我们要按照某个字段进行分组,"field" 指定了我们要按照哪个字段进行分组。
运行上述查询后,得到的结果如下:
```
{
"aggregations": {
"products": {
"buckets": [
{
"key": "A",
"doc_count": 3
},
{
"key": "B",
"doc_count": 2
},
{
"key": "C",
"doc_count": 1
}
]
}
}
}
```
其中,"key" 表示产品名称,"doc_count" 表示该产品出现的次数。
如果想要对出现次数进行排序,可以使用以下聚合查询:
```
{
"aggs": {
"products": {
"terms": {
"field": "product",
"order": {
"_count": "desc"
}
}
}
}
}
```
其中,"order" 表示按照什么字段进行排序,"_count" 表示按照出现次数进行排序,"desc" 表示降序排列。
运行上述查询后,得到的结果如下:
```
{
"aggregations": {
"products": {
"buckets": [
{
"key": "A",
"doc_count": 3
},
{
"key": "B",
"doc_count": 2
},
{
"key": "C",
"doc_count": 1
}
]
}
}
}
```
其中,产品 A 出现的次数最多,排在第一位。
阅读全文