ES聚合查询在基本语法

简介: ES聚合查询在基本语法

以下代码均在Kibana的dev tools下执行

1、创造数据

POST /test_aggs/infos/1?pretty
{
  "title":"test class 01",
  "price": 20,
  "desc": ["good","very","handsome"]
}
POST /test_aggs/infos/2?pretty
{
  "title":"test class 02",
  "price": 30,
  "desc": ["good2","very","handsome"]
}
POST /test_aggs/infos/3?pretty
{
  "title":"test class 03",
  "price": 50,
  "desc": ["good3","very2","handsome"]
}

2、构建聚合函数语句

ES聚合的基本语法

## 示例1:
POST /test_aggs/infos/_search?pretty
{
  "size":0,
  "query":{"match_all":{}},
  "aggs":{
    "aggs_terms":{
      "min":{
         "field":"price"
      }
    }
  }
}

 

## 示例2:根据title的分词进行分组,计算分数的平均值
PUT /test_aggs/_mapping/infos
{
  "properties": {
    "title": { 
      "type":     "text",
      "fielddata": true
    }
  }
}
POST /test_aggs/infos/_search?pretty
{
  "size":0,
  "query":{"match_all":{}},
  "aggs":{
    "aggs_terms":{
      "terms":{
         "field":"title"
      },
      "aggs":{
          "aggs_avg":{
            "avg":{
              "field":"price"
            }
          }
       }
    }
  }
}
结果:
{
  "took": 7,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "aggs_terms": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "class",
          "doc_count": 3,
          "aggs_avg": {
            "value": 33.333333333333336
          }
        },
        {
          "key": "test",
          "doc_count": 3,
          "aggs_avg": {
            "value": 33.333333333333336
          }
        },
        {
          "key": "01",
          "doc_count": 1,
          "aggs_avg": {
            "value": 20
          }
        },
        {
          "key": "02",
          "doc_count": 1,
          "aggs_avg": {
            "value": 30
          }
        },
        {
          "key": "03",
          "doc_count": 1,
          "aggs_avg": {
            "value": 50
          }
        }
      ]
    }
  }
}
## 示例3:
POST /test_aggs/infos/_search?pretty
{
  "size":0,
  "query":{"match_all":{}},
  "aggs":{
    "aggs_terms":{
      "stats":{
         "field":"price"
      }
    }
  }
}
#示例4:冗余索引的分组
1、构造更多测试数据
PUT /website/users/3
{
  "name": "黄药师",
  "email": "huangyaoshi@sina.com",
  "birthday": "1970-10-24"
}
PUT /website/blogs/3
{
  "title": "我是黄药师",
  "content": "我是黄药师啊,各位同学们!!!",
  "userInfo": {
    "userId": 1,
    "userName": "黄药师"
  }
}
PUT /website/users/2
{
  "name": "花无缺",
  "email": "huawuque@sina.com",
  "birthday": "1980-02-02"
}
PUT /website/blogs/4
{
  "title": "花无缺的身世揭秘",
  "content": "大家好,我是花无缺,所以我的身世是。。。",
  "userInfo": {
    "userId": 2,
    "userName": "花无缺"
  }
}
2、对每个用户发表的博客进行分组
比如说,小鱼儿发表的那些博客,花无缺发表了哪些博客,黄药师发表了哪些博客
GET /website/blogs/_search 
{
  "size": 0, 
  "aggs": {
    "group_by_username": {
      "terms": {
        "field": "userInfo.username.keyword"
      },
      "aggs": {
        "top_blogs": {
          "top_hits": {
            "_source": {
              "include": "title"
            }, 
            "size": 5
          }
        }
      }
    }
  }
}

 


相关文章
|
3月前
|
缓存 索引
kibana上执行ES DSL语言查询数据并查看表结构与数据、删除索引、查看文件大小
kibana上执行ES DSL语言查询数据并查看表结构与数据、删除索引、查看文件大小
125 0
|
3月前
|
SQL 存储 API
ES 实战复杂sql查询、修改字段类型
ES 实战复杂sql查询、修改字段类型
64 1
|
4月前
|
SQL 安全 数据挖掘
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
Elasticsearch聚合查询用于复杂数据分析,包括统计空值率。示例展示了如何计算字段`my_field`非空非零文档的百分比。查询分为三步:总文档数计数、符合条件文档数计数及计算百分比。聚合概念涵盖度量、桶和管道聚合。脚本在聚合中用于动态计算。常见聚合类型如`sum`、`avg`、`date_histogram`等。组合使用可实现多值统计、嵌套聚合和空值率计算。[阅读更多](https://zhangfeidezhu.com/?p=515)
282 0
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
|
4月前
|
关系型数据库 MySQL PHP
【thinkphp知识】thinkphp 使用union链式操作合并两个或多个 SELECT 语句的结果集,新增不存在的字段,并赋予默认值
【thinkphp知识】thinkphp 使用union链式操作合并两个或多个 SELECT 语句的结果集,新增不存在的字段,并赋予默认值
41 0
|
5月前
|
自然语言处理 索引
03_ES数据查询操作
03_ES数据查询操作
81 0
|
存储
ES聚合查询详解(四):管道聚合
ES聚合查询详解(四):管道聚合
510 0
ES聚合查询详解(四):管道聚合
es聚合查询并且返回对应组的数据
es聚合查询并且返回对应组的数据
431 0
|
SQL 大数据 开发者
SQL 语法--表特定语句--分组、排序、过滤 | 学习笔记
快速学习 SQL 语法--表特定语句--分组、排序、过滤
234 0
SQL 语法--表特定语句--分组、排序、过滤 | 学习笔记
|
关系型数据库 MySQL
ES复杂查询-结果过滤, 排序,分页
ES复杂查询-结果过滤, 排序,分页
|
SQL 关系型数据库 MySQL
ES中如何实现类似having的先聚合再过滤查询
ES中如何实现类似having的先聚合再过滤查询
534 0
ES中如何实现类似having的先聚合再过滤查询