文章目录

  • 聚合分组
  • 求和
  • 平均值
  • 分析每种颜色下每种品牌的平均价格
  • 更多的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聚合查询相关推荐

  1. Elasticsearch聚合查询案例分享

    为什么80%的码农都做不了架构师?>>>    Elasticsearch聚合查询案例分享 1.案例介绍 本文包含三个案例: 案例1:统计特定时间范围内每个应用的总访问量.访问成功数 ...

  2. php聚合查询,php elasticsearch 聚合查询(Aggregation)

    Elasticsearch中的聚合查询,类似SQL的SUM/AVG/COUNT/GROUP BY分组查询,主要用于统计分析场景. 这里主要介绍PHP Elasticsearch 聚合查询的写法,如果不 ...

  3. Elasticsearch聚合查询多字段设置权重

    Elasticsearch聚合查询多字段设置权重 背景 环境说明 script设置权重 小结 背景 实际应用中,可能会需要为为doc文档中某个字段的某些特定的值设置权重,影响排序.es提供了比较灵活的 ...

  4. ElasticSearch聚合查询返回结果buckets取值

    ElasticSearch聚合查询返回结果buckets取值 1.聚合查询如下: {"size":0,"query":{"bool":{&q ...

  5. ElasticSearch聚合查询Restful语法和JavaApi详解(基于ES7.6)

    本文收录于github和gitee ,里面有我完整的Java系列文章,学习或面试都可以看看 (一)概述 在前面关于ES的一系列文章中,已经介绍了ES的概念.常用操作.JavaAPI以及实际的一个小de ...

  6. ES/ElasticSearch 聚合查询时报错:too_many_buckets_exception

    环境:ElasticSearch6.7 问题描述: {"error": {"root_cause": [],"type": "se ...

  7. (转)Elasticsearch 聚合查询、桶聚合、管道聚合及复合查询

    转自: https://blog.csdn.net/zx711166/article/details/81906881 聚合查询 聚合是一种基于查询条件对数据进行分桶.计算的方法. 聚合可以嵌套,由此 ...

  8. ElasticSearch 聚合查询

    价格总和: 1,使用aggs   2,自己起个名字price_of_sum  3,求和sum   4,filed要求和的字段 GET /lib5/items/_search {"aggs&q ...

  9. ElasticSearch 聚合查询 JavaApi

    ES 聚合查询Java Api 分页查询,按照时间进行分组查询求平均(多平均),按照某一字段分组求聚合等等 分页查询 SysUser loginUser = SecurityUtils.getLogi ...

  10. java中使用ElasticSearch聚合查询代码实例(个人笔记,不喜勿喷)

    PS→无奈:拥有梦想只是一种智力,实现梦想才是一种能力. 空闲之余就把先前做过的一个通过ElasticSearch的聚合来实现查询当月实际签到的天数记录一下,纯留下点记忆,大家勿喷. 1.如果不了解e ...

最新文章

  1. HTML5背后的故事
  2. 容斥原理学习(Hdu 4135,Hdu 1796)
  3. 上海交大 CDNet:基于YOLOv5改进的 人行道 斑马线和汽车过线行为检测
  4. Centos最小化装机网络问题
  5. Linux 命令之 chmod -- 改变文件或目录权限
  6. java里shake是什么意思_shake是什么意思_shake在线翻译_英语_读音_用法_例句_海词词典...
  7. 如何根据接口写一个客户端进行发单测试?
  8. 星战7将映 追忆那些年存储你身边大数据
  9. 2-SAT 问题(洛谷-P4782)
  10. verilog将像素数据写入txt_【测试工具】测试数据生成工具datafaker
  11. 常用滤波算法(转载)
  12. java视频教程免费下载
  13. 基于R软件的网状meta分析
  14. 6. lcd驱动1-硬件原理
  15. C#向一个Word文件中插入文字与图片
  16. 什么是 DNS 泛洪?
  17. 路由的query参数
  18. app第三方支付,微信小程序支付
  19. Spring框架快速入门
  20. 机器学习分类模型评价指标详述

热门文章

  1. [设计模式] ------ 策略模式实战:java中替代if-else的大段逻辑
  2. 交叉线和直通线各自用于什么场合?为什么?_【小麓讲堂】偏振光与LCD、OLED、3D、AR到底有什么关系?...
  3. PHP8编译swoole出错,swoole自定义错误的方法
  4. MATLAB仿真TSC在哪里找,-bash:tsc:找不到命令
  5. JAVA构架之并发编程的一些总结
  6. python 局域网主机扫描_python扫描局域网主机名
  7. 重置mysql+密码_MySQL重置root密码的几种方法(windows+Linux)
  8. c语言星空程序,C语言实现动态星空
  9. django开源电子文档管理系统_Python实操技术分享:Django文件管理系统,Apple的学习思路...
  10. 去调频体制下的 rd算法_【技术文章】一次调频工作原理及控制 学习1+1