ElasticSearch中 如何使用“group by“ 进行日 周 月 年统计呢?(ElasticsearchTemplate进行聚合查询)
我用的es是 6.8.1
如果我们想在es实现sql 中的group by 进行 日 周月年的统计
SELECT COUNT(id) FROM patientstudy GROUP BY createTime;
先介绍下 es DateHistogramInterval
public static final DateHistogramInterval SECOND = new DateHistogramInterval("1s");public static final DateHistogramInterval MINUTE = new DateHistogramInterval("1m");public static final DateHistogramInterval HOUR = new DateHistogramInterval("1h");public static final DateHistogramInterval DAY = new DateHistogramInterval("1d");public static final DateHistogramInterval WEEK = new DateHistogramInterval("1w");public static final DateHistogramInterval MONTH = new DateHistogramInterval("1M");public static final DateHistogramInterval QUARTER = new DateHistogramInterval("1q");public static final DateHistogramInterval YEAR = new DateHistogramInterval("1y");
在kibana中执行命令
POST /patientstudy/_search?size=5
{"query": {"bool": {"must": [{"range": {"createTime": {"gte": "2021-01-06","lte": "2021-04-08"}}}]}},"aggs": {"studyCount": {"date_histogram": {"field": "createTime","interval": "1h","time_zone": "+08:00","format":"yyyy/MM/dd HH:mm"}}}}
看结果
java代码
public Result<List> studyTimeList() {List list=new ArrayList();RangeQueryBuilder rangequerybuilder = QueryBuilders.rangeQuery("createTime").from("2021-04-06").to("2021-04-06");QueryBuilder builder = null;builder=QueryBuilders.boolQuery().must(QueryBuilders.termsQuery("hospitalId", "2265")).must(rangequerybuilder);DateHistogramAggregationBuilder tb1 = AggregationBuilders.dateHistogram("study_count").minDocCount(0).dateHistogramInterval(DateHistogramInterval.MONTH).format("yyyy-MM-dd HH:mm:ss").field("createTime");ValueCountAggregationBuilder sb = AggregationBuilders.count("count_id").field("hospitalId");tb1.subAggregation(sb);//patientstudy 是索引名称 _doc 是索引类型 一般在es 索引实体里配置的 @Document(indexName = "patientstudy", type = "_doc")SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices("patientstudy").withTypes("_doc").withQuery(builder).addAggregation(tb1).build();// 执行语句获取聚合结果Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() {@Overridepublic Aggregations extract(SearchResponse response) {return response.getAggregations();}});// 获取聚合结果Histogram term = aggregations.get("study_count");// 获取结果后进行解析if (term.getBuckets().size() > 0) {for ( Histogram.Bucket bk : term.getBuckets()) {Map<String,Object> map = new HashMap<>();map.put("study_count",bk.getDocCount());map.put("time",bk.getKeyAsString());log.info("一次循环结束--------------------------");list.add(map);}}return ResultUtil.data(ResultCode.RESULT_SUCCESS.getCode(), "",list);}
注意:createTime 必须是date 类型
ElasticSearch中 如何使用“group by“ 进行日 周 月 年统计呢?(ElasticsearchTemplate进行聚合查询)相关推荐
- mysql分季度统计数据,mysql按日周月季度统计数据
mysql按日周月季度统计数据 mysql按日.周.月.季度统计数据 1.使用DATE_FORMAT做等值条件查询 2.DATE_FORMAT函数语法,参考w3school 3.可使用格式 4.使用示 ...
- Oracle按日周月分组统计,及next_day()函数详解
1.概述 工作中遇到如下问题:统计周期内关键词数,而这里的周期内最常用的就是日周月. 日月比较容易处理,周的话可以通过next_day()函数实现. 2.实例问题 如下,有一张表ljb_test,包括 ...
- oracle 按日输出 取整数,Oracle按日周月分組統計,及next_day()函數詳解
1.概述 工作中遇到如下問題:統計周期內關鍵詞數,而這里的周期內最常用的就是日周月. 日月比較容易處理,周的話可以通過next_day()函數實現. 2.實例問題 如下,有一張表ljb_test,包括 ...
- MACD多周期共振指标公式,日周月共振
有人问多周期MACD怎么写,编写指标的难度其实不大,主要问题是解决多周期MACD显示的问题.日线.周线.月线三个周期,每个周期都有快线DIF和慢线DEA两条线,一共6条,怎么在副图上清晰显示出来. 一 ...
- php文章周月总排行榜怎么实现,帝国cms7.0实现日 周 月点击排行的方法
本文将为您介绍的是帝国cms7.0实现日 周 月点击排行的方法,具体操作方法请看下文: 新增信息的排行不太符合我的要求.就自己琢磨了一套全站信息的月点击.周点击排行.需要新增几个字段及修改文件.下面开 ...
- java8 日期范围内 日/周/月/季度/年 的日期结果集
java8 日期范围内 日/周/月/季度/年 的日期结果集 /*** 根据时间范围列出所有日/周/月/季/年** @Author Moqi* @Date 2020/4/30* @Version V1. ...
- KDJ日周月金叉共振指标
昨天介绍了MACD多周期共振指标公式,KDJ通过类似的写法,也可以共振.本文介绍的KDJ日周月金叉共振指标包含日周金叉共振.日月金叉共振.周月金叉共振.日周月金叉共振四种类型. 需要注意的问题依然是周 ...
- 日周月筛选器_天谕2.09月3日周版本更新维护内容预告
亲爱的谕霸: 为了给谕霸们带来更好的游戏品质以及更极致的游戏体验,我们会不断对游戏进行调整和修复. <天谕2.0>9月3日周版本更新维护内容预告 特别提示本周维护时间为9月3日上午8:00 ...
- sql 日周月统计和
sql本日\本周\本月统计 SQL的本月统计和本周统计 本月统计(MySQL) select * from booking where month(booking_time) = month(curd ...
- 开发笔记 | JAVA获取微信步数+日周月排行榜的实现
目录 功能描述 微信步数同步 获取我当日的步数 日排行,周排行,月排行榜的实现 功能描述 实现微信步数的同步(也就是获取当前的微信步数更新至数据库) 实现获取我当日的微信步数的查询 实现按照日排行,周 ...
最新文章
- 使IIS服务器支持下载 apk/ipa 安装包
- Android 程序打包及签名
- 利用权限禁止QQ的自动升级(QQUpdateCenter)
- mysql硬解析与软解析_SQL 软解析和硬解析详解
- 基于Dialog的MFC程序在启动时隐藏为托盘程序(三)
- H3C Wx5004无线控制器修改SSID名称
- 一次网络丢包问题排查的经历
- 第十五课 简单易懂的指针
- OpenGL与显卡驱动
- Android Parcel对象详解
- BZOJ3168. 【HEOI2013】钙铁锌硒维生素
- McAfee解读风险管理之道 企业安全面临新挑战
- 霍尔逻辑Hoare Logic
- 国外计算机学校排名,国外财经学校排名,财经学校
- halcon循环语句,条件句结构格式
- loadrunner的安装
- 上海中兴软件测试面试,中兴综合测评没做完
- 基于JAVA旅游景区预约管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- python tif转jpg_无法将tiff图像转换为jpg
- [Win32]Win32 SDK编程系列文章——键盘输入消息
热门文章
- python实现合并多个excel中同名的sheet
- COM ---- Inside COM Note
- 什么是域名服务器作用是啥,域名服务器的作用是什么?域名服务器原理及流程...
- 父级fixed_position:fixed相对父级元素定位而不是浏览器
- BZOJ5394: [Ynoi2016]炸脖龙(欧拉广义降幂)
- JS 基础: 你真的了解 console 吗?
- 动态代理实例——增强Waiter接口
- 如何让div靠右_div对齐 CSS实现DIV居中对齐 div居右对齐 div居左对齐
- Linux磁盘空间说明
- win7显示隐藏文件夹的方法