ES聚合之Pipeline聚合语法讲解
目录
目标
ES版本信息
官方文档
实战
新增测试数据
基本语法
百分数分桶聚合
目标
掌握Pipeline aggregations(管道聚合,相当于MySQL中的having )的基本语法。它比另外两种类型的聚合用得较少,这里只举了少量案例供大家参考分析。Pipeline aggregations分为两类:
- Parent(父级):结果内嵌到现有的聚合结果中。
- Sibling(兄弟级):结果和现有的聚合结果同级。
ES版本信息
7.17.5
官方文档
Pipeline aggregationshttps://www.elastic.co/guide/en/elasticsearch/reference/7.17/search-aggregations-pipeline.html
实战
新增测试数据
#图书馆数据库
PUT /library_db
{"settings": {"index": {"analysis.analyzer.default.type": "ik_max_word"}}
}PUT /library_db/_bulk
{"index":{"_id":"1"}}
{"id":1,"type":"玄幻","name":"诛仙","words_num":120,"chapter_num":600,"completion_time":"2000-09-01","author":"萧鼎","prices":32.12}
{"index":{"_id":"2"}}
{"id":2,"type":"玄幻","name":"诛仙前传:蛮荒行","words_num":30,"chapter_num":67,"completion_time":"2020-09-01","author":"萧鼎","prices":23.12}
{"index":{"_id":"3"}}
{"id":3,"type":"武侠","name":"天龙八部","words_num":80,"chapter_num":120,"completion_time":"1995-09-01","author":"金庸","prices":52.1}
{"index":{"_id":"4"}}
{"id":4,"type":"武侠","name":"射雕英雄传","words_num":67,"chapter_num":95,"completion_time":"1998-01-01","author":"金庸","prices":4.12}
{"index":{"_id":"5"}}
{"id":5,"type":"武侠","name":"神雕侠侣","words_num":75,"chapter_num":76,"completion_time":"2000-01-01","author":"金庸","prices":32.8}
{"index":{"_id":"6"}}
{"id":5,"type":"武侠","name":"倚天屠龙记","words_num":83,"chapter_num":130,"completion_time":"2003-01-01","author":"金庸","prices":100.12}
{"index":{"_id":"7"}}
{"id":7,"type":"玄幻","name":"凡人修仙传","words_num":600,"chapter_num":3000,"completion_time":"2018-01-01","author":"忘语","prices":120.12}
{"index":{"_id":"8"}}
{"id":8,"type":"玄幻","name":"魔天记","words_num":159,"chapter_num":400,"completion_time":"2019-01-01","author":"忘语","prices":11.12}
{"index":{"_id":"9"}}
{"id":9,"type":"都市异能","name":"黄金瞳","words_num":220,"chapter_num":400,"completion_time":"2019-01-01","author":"打眼","prices":74.5}
{"index":{"_id":"10"}}
{"id":10,"type":"玄幻","name":"将夜","words_num":210,"chapter_num":600,"completion_time":"2014-01-01","author":"血红","prices":32.0}
{"index":{"_id":"11"}}
{"id":11,"type":"军事","name":"亮剑","words_num":120,"chapter_num":100,"completion_time":"2012-01-01","author":"都梁","prices":15.0}
基本语法
需求一:求每个作者下面字数最多的小说的字数,按照作品数量降序排序。
分析:第一步求出每个作者的小说数量,按照降序排序;第二步求出每个作者下字数最多的小说的字数。
POST /library_db/_search
{"size": 0,"aggs": {"author_group": {"terms": {"field": "author.keyword","size": 10,"order": {"_key": "desc"}},"aggs": {"max_words_num": {"max": {"field": "words_num"}}}}}
}
需求二:求小说的每个类型的平均字数,求出最大的平均字数。
POST /library_db/_search
{"size": 0,"aggs": {"author_group": {"terms": {"field": "type.keyword","size": 10,"order": {"_key": "desc"}},"aggs": {"avg_words_num": {"avg": {"field": "words_num"}}}},"max_avg_words_num":{"max_bucket": {"buckets_path": "author_group>avg_words_num"}}}
}
百分数分桶聚合
需求:求小说的每个类型的平均字数,求出平均字数的百分位。
POST /library_db/_search
{"size": 0,"aggs": {"author_group": {"terms": {"field": "type.keyword","size": 10,"order": {"_key": "desc"}},"aggs": {"avg_words_num": {"avg": {"field": "words_num"}}}},"percentiles_avg_words_num":{"percentiles_bucket": {"buckets_path": "author_group>avg_words_num","percents": [ 25.0, 50.0, 75.0,100 ] }}}
}
ES聚合之Pipeline聚合语法讲解相关推荐
- MongoDB聚合查询 Pipeline 和 MapReduce
MongoDB聚合查询 MongoDB聚合查询 什么是聚合查询 Pipeline聚合管道方法 聚合流程 详细流程 聚合语法 常用聚合管道 $count $group $match $unwind $p ...
- ES聚合之Bucket聚合语法讲解
目录 目标 ES版本信息 官方文档 实战 新增测试数据 基本语法 先过滤再分桶聚合 按照范围聚合 Histogram(直方图/柱状图) 嵌套分桶聚合 Date range aggregation(日期 ...
- ES的Query的DSL语法Filter DSL聚合分析
1 查询所有(match_all query) GET /lagou-company-index/_search { "query":{ "match_all" ...
- es的聚合mysql聚合速度_Elasticsearch(8) --- 聚合查询(Metric聚合)
摘要: quot;:0,"aggs":{"stats_salary":{"stats":{"field":"s ...
- Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合
Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...
- Oracle中的within,Oracle函数 --聚合函数中的语法within group
Oracle的聚合函数一般与group by 联合使用,但一般通过group by 聚合 但某些聚合函数会后跟 WITHIN GROUP (ORDER BY expr [ DESC | ASC ] [ ...
- estemplate 导入MySQL_[数据库]es~通过ElasticsearchTemplate进行聚合操作
[数据库]es~通过ElasticsearchTemplate进行聚合操作 0 2020-08-24 17:00:38 聚合操作,我们可以对数据进行分组的求和,求数,最大值,最小值,或者其它的自定义的 ...
- Es elasticsearch 十七 Java api 实现聚合 几个聚合示例 sql 开启许可 新特效 java 实现es7 sql 功能
目录 Java api 实现聚合 依赖 简单聚合按照颜色分组获取每个卖出数量 聚合每个颜色卖出数量,及平均价格(每个分桶子聚合) 按照颜色分组 ,获取销售数量,avg min max sum 按照60 ...
- Es 根据时间分组聚合 (趋势图 折线图数据)
DSL 语句 {"size": 0,"query": {"bool": {"must": [{"range&q ...
最新文章
- eclipse git插件配置
- android系统可以破吗,你的手机系统破到什么程度?一键查安卓漏洞
- 菜鸟教程之Microsoft Windows Powershell
- Kafka系统的组件、角色以及和zookeeper的关系
- 餐饮水单打印软件_开发一款餐饮手机app系统软件什么价格?有哪些方面需要考虑?...
- 环,模,补码,负数的表示与减法实现
- C# .Net ListT中Remove()、RemoveAt()、RemoveRange()、RemoveAll()的区别,ListT删除汇总
- kafka0.8消费者实例 1
- MongoDB 下载和安装
- veeam的备份策略(每周6增量备份,每周日合成全量备份)
- 0xC0000005: 读取位置 0x00000000 时发生访问冲突
- 计算机网络复习03——数据链路层
- Python对文件进行重命名
- 程序员如何巧用Excel提高工作效率
- python算法动画_这可能是史上最全的Python算法集!
- CameraCaptureSession
- 【路径规划】基于matlab蚁群优化遗传算法机器人栅格地图最短路径规划【含Matlab源码 1581期】
- 2014年10月23日(账本软件)
- 大不列颠百科全书Encyclopaedia Britannica Ultimate 2014光盘镜像
- 对象赋值时this指向问题 obj1.say = obj2.say;obj1.say()