ElasticSearch聚合查询
文章目录
- 聚合分组
- 求和
- 平均值
- 分析每种颜色下每种品牌的平均价格
- 更多的metric学习
- Cardinality(唯一值)
- 查询+聚合分析
- 查询聚合+全局聚合 深入聚合数据分析_global bucket:单个品牌与所有品牌销量对比
- 过滤+聚合:统计价格大于1200的电视平均价格
- 统计最近一个月的平均价格
- 按照每种品牌的平均价格排序
聚合分组
select * from table group by title.keyword
{"size": 0,"aggs": {"group_name": {"terms": {"field": "title.keyword"}}}
}
解释:
size:0 表示只展示聚合结果,不展示原始数据
aggs:表示聚合的操作符
group_name:给聚合操作取名
terms:根据字段的值进行分组
field:根据指定的字段值进行分组
求和
按照title分组求和
select sum(price) from table group by title.
{"size": 0,"aggs": {"group_name": {"terms": {"field": "title.keyword"},"aggs":{"sum_price":{"sum":{"field":"price"}}}}}
}
平均值
select avg(price) from table group by title.
{"size": 0,"aggs": {"group_name": {"terms": {"field": "title.keyword"},"aggs":{"avg_price":{"avg":{"field":"price"}}}}}
}
分析每种颜色下每种品牌的平均价格
{"size": 0,"aggs": {"group_name": {"terms": {"field": "color.keyword"},"aggs": {"group_by_brand": {"terms": {"field": "brand.keyword"},"aggs": {"avg_price_by_color": {"avg": {"field": "price"}}}}}}}
}
更多的metric学习
{"size": 0,"aggs": {"group_name": {"terms": {"field": "color.keyword"},"aggs": {"avg_price": {"avg": {"field": "price"}},"sum_price": {"sum": {"field": "price"}},"max_price": {"max": {"field": "price"}},"min_max": {"min": {"field": "price"}}}}}
}
输出:
"took": 66,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 3,"relation": "eq"},"max_score": null,"hits": []},"aggregations": {"group_name": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "white","doc_count": 2,"max_price": {"value": 5500},"min_max": {"value": 4500},"avg_price": {"value": 5000},"sum_price": {"value": 10000}},{"key": "blue","doc_count": 1,"max_price": {"value": 4000},"min_max": {"value": 4000},"avg_price": {"value": 4000},"sum_price": {"value": 4000}}]}}
}
一般来说,90%的常见的数据分析的操作,metric,无非就是count,avg,max,min,sum
Cardinality(唯一值)
cardinality 即去重计算,类似sql中 count(distinct),先去重再求和,计算指定field值的种类数。
{"size": 0,"aggs": {"cartinality_gender": {"cardinality": {"field": "city.keyword"}}}
}
输出
{"took": 2,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 15,"max_score": 0,"hits": []},"aggregations": {"cartinality_gender": {"value": 15}}
}```## stats 一个聚合,输出多值
```java
{"size": 0,"aggs": {"stats_price": {"stats": {"field": "price"}}}
}
{"took": 3,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 3,"relation": "eq"},"max_score": null,"hits": []},"aggregations": {"stats_price": {"count": 3,"min": 4000,"max": 5500,"avg": 4666.666666666667,"sum": 14000}}
}
查询+聚合分析
{"query":{"match":{"title":"神州"}},"aggs":{"sum_price":{"sum":{"field":"price"}}}
}
输出
"took": 54,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 2,"relation": "eq"},"max_score": 0.9983525,"hits": [{"_index": "aggs_index","_type": "_doc","_id": "5","_score": 0.9983525,"_source": {"brand": "huashuo","color": "white","price": 5500,"title": "神州"}},{"_index": "aggs_index","_type": "_doc","_id": "6","_score": 0.8416345,"_source": {"brand": "dell","color": "white","price": 4500,"title": "神州dell"}}]},"aggregations": {"sum_price": {"value": 10000}}
}
查询聚合+全局聚合 深入聚合数据分析_global bucket:单个品牌与所有品牌销量对比
global:就是global bucket,就是将所有数据纳入聚合的scope,而不管之前的query
{"query": {"match": {"title": "神州"}},"aggs": {"sum_price": {"sum": {"field": "price"}},"all": {"global": {},"aggs": {"all_sum_price": {"sum": {"field": "price"}}}}}
}
输出
{"query": {"match": {"title": "神州"}},"aggs": {"sum_price": {"sum": {"field": "price"}},"all": {"global": {},"aggs": {"all_sum_price": {"sum": {"field": "price"}}}}}
}
过滤+聚合:统计价格大于1200的电视平均价格
{"size": 0,"query": {"constant_score": {"filter": {"range": {"price": {"gte": 1200}}}}},"aggs": {"avg_price": {"avg": {"field": "price"}}}
}
统计最近一个月的平均价格
{"size": 0,"query": {"term": {"brand": {"value": "长虹"}}},"aggs": {"recent_150d": {"filter": {"range": {"sold_date": {"gte": "now-150d"}}},"aggs": {"recent_150d_avg_price": {"avg": {"field": "price"}}}},"recent_140d": {"filter": {"range": {"sold_date": {"gte": "now-140d"}}},"aggs": {"recent_140d_avg_price": {"avg": {"field": "price"}}}},"recent_130d": {"filter": {"range": {"sold_date": {"gte": "now-130d"}}},"aggs": {"recent_130d_avg_price": {"avg": {"field": "price"}}}}}
}
按照每种品牌的平均价格排序
{"size": 0,"aggs": {"group_by_color": {"terms": {"field": "brand.keyword","order":{"avg_price":"desc"}},"aggs": {"avg_price": {"avg": {"field": "price"}}}}}
}
ElasticSearch聚合查询相关推荐
- Elasticsearch聚合查询案例分享
为什么80%的码农都做不了架构师?>>> Elasticsearch聚合查询案例分享 1.案例介绍 本文包含三个案例: 案例1:统计特定时间范围内每个应用的总访问量.访问成功数 ...
- php聚合查询,php elasticsearch 聚合查询(Aggregation)
Elasticsearch中的聚合查询,类似SQL的SUM/AVG/COUNT/GROUP BY分组查询,主要用于统计分析场景. 这里主要介绍PHP Elasticsearch 聚合查询的写法,如果不 ...
- Elasticsearch聚合查询多字段设置权重
Elasticsearch聚合查询多字段设置权重 背景 环境说明 script设置权重 小结 背景 实际应用中,可能会需要为为doc文档中某个字段的某些特定的值设置权重,影响排序.es提供了比较灵活的 ...
- ElasticSearch聚合查询返回结果buckets取值
ElasticSearch聚合查询返回结果buckets取值 1.聚合查询如下: {"size":0,"query":{"bool":{&q ...
- ElasticSearch聚合查询Restful语法和JavaApi详解(基于ES7.6)
本文收录于github和gitee ,里面有我完整的Java系列文章,学习或面试都可以看看 (一)概述 在前面关于ES的一系列文章中,已经介绍了ES的概念.常用操作.JavaAPI以及实际的一个小de ...
- ES/ElasticSearch 聚合查询时报错:too_many_buckets_exception
环境:ElasticSearch6.7 问题描述: {"error": {"root_cause": [],"type": "se ...
- (转)Elasticsearch 聚合查询、桶聚合、管道聚合及复合查询
转自: https://blog.csdn.net/zx711166/article/details/81906881 聚合查询 聚合是一种基于查询条件对数据进行分桶.计算的方法. 聚合可以嵌套,由此 ...
- ElasticSearch 聚合查询
价格总和: 1,使用aggs 2,自己起个名字price_of_sum 3,求和sum 4,filed要求和的字段 GET /lib5/items/_search {"aggs&q ...
- ElasticSearch 聚合查询 JavaApi
ES 聚合查询Java Api 分页查询,按照时间进行分组查询求平均(多平均),按照某一字段分组求聚合等等 分页查询 SysUser loginUser = SecurityUtils.getLogi ...
- java中使用ElasticSearch聚合查询代码实例(个人笔记,不喜勿喷)
PS→无奈:拥有梦想只是一种智力,实现梦想才是一种能力. 空闲之余就把先前做过的一个通过ElasticSearch的聚合来实现查询当月实际签到的天数记录一下,纯留下点记忆,大家勿喷. 1.如果不了解e ...
最新文章
- HTML5背后的故事
- 容斥原理学习(Hdu 4135,Hdu 1796)
- 上海交大 CDNet:基于YOLOv5改进的 人行道 斑马线和汽车过线行为检测
- Centos最小化装机网络问题
- Linux 命令之 chmod -- 改变文件或目录权限
- java里shake是什么意思_shake是什么意思_shake在线翻译_英语_读音_用法_例句_海词词典...
- 如何根据接口写一个客户端进行发单测试?
- 星战7将映 追忆那些年存储你身边大数据
- 2-SAT 问题(洛谷-P4782)
- verilog将像素数据写入txt_【测试工具】测试数据生成工具datafaker
- 常用滤波算法(转载)
- java视频教程免费下载
- 基于R软件的网状meta分析
- 6. lcd驱动1-硬件原理
- C#向一个Word文件中插入文字与图片
- 什么是 DNS 泛洪?
- 路由的query参数
- app第三方支付,微信小程序支付
- Spring框架快速入门
- 机器学习分类模型评价指标详述
热门文章
- [设计模式] ------ 策略模式实战:java中替代if-else的大段逻辑
- 交叉线和直通线各自用于什么场合?为什么?_【小麓讲堂】偏振光与LCD、OLED、3D、AR到底有什么关系?...
- PHP8编译swoole出错,swoole自定义错误的方法
- MATLAB仿真TSC在哪里找,-bash:tsc:找不到命令
- JAVA构架之并发编程的一些总结
- python 局域网主机扫描_python扫描局域网主机名
- 重置mysql+密码_MySQL重置root密码的几种方法(windows+Linux)
- c语言星空程序,C语言实现动态星空
- django开源电子文档管理系统_Python实操技术分享:Django文件管理系统,Apple的学习思路...
- 去调频体制下的 rd算法_【技术文章】一次调频工作原理及控制 学习1+1