我用的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进行聚合查询)相关推荐

  1. mysql分季度统计数据,mysql按日周月季度统计数据

    mysql按日周月季度统计数据 mysql按日.周.月.季度统计数据 1.使用DATE_FORMAT做等值条件查询 2.DATE_FORMAT函数语法,参考w3school 3.可使用格式 4.使用示 ...

  2. Oracle按日周月分组统计,及next_day()函数详解

    1.概述 工作中遇到如下问题:统计周期内关键词数,而这里的周期内最常用的就是日周月. 日月比较容易处理,周的话可以通过next_day()函数实现. 2.实例问题 如下,有一张表ljb_test,包括 ...

  3. oracle 按日输出 取整数,Oracle按日周月分組統計,及next_day()函數詳解

    1.概述 工作中遇到如下問題:統計周期內關鍵詞數,而這里的周期內最常用的就是日周月. 日月比較容易處理,周的話可以通過next_day()函數實現. 2.實例問題 如下,有一張表ljb_test,包括 ...

  4. MACD多周期共振指标公式,日周月共振

    有人问多周期MACD怎么写,编写指标的难度其实不大,主要问题是解决多周期MACD显示的问题.日线.周线.月线三个周期,每个周期都有快线DIF和慢线DEA两条线,一共6条,怎么在副图上清晰显示出来. 一 ...

  5. php文章周月总排行榜怎么实现,帝国cms7.0实现日 周 月点击排行的方法

    本文将为您介绍的是帝国cms7.0实现日 周 月点击排行的方法,具体操作方法请看下文: 新增信息的排行不太符合我的要求.就自己琢磨了一套全站信息的月点击.周点击排行.需要新增几个字段及修改文件.下面开 ...

  6. java8 日期范围内 日/周/月/季度/年 的日期结果集

    java8 日期范围内 日/周/月/季度/年 的日期结果集 /*** 根据时间范围列出所有日/周/月/季/年** @Author Moqi* @Date 2020/4/30* @Version V1. ...

  7. KDJ日周月金叉共振指标

    昨天介绍了MACD多周期共振指标公式,KDJ通过类似的写法,也可以共振.本文介绍的KDJ日周月金叉共振指标包含日周金叉共振.日月金叉共振.周月金叉共振.日周月金叉共振四种类型. 需要注意的问题依然是周 ...

  8. 日周月筛选器_天谕2.09月3日周版本更新维护内容预告

    亲爱的谕霸: 为了给谕霸们带来更好的游戏品质以及更极致的游戏体验,我们会不断对游戏进行调整和修复. <天谕2.0>9月3日周版本更新维护内容预告 特别提示本周维护时间为9月3日上午8:00 ...

  9. sql 日周月统计和

    sql本日\本周\本月统计 SQL的本月统计和本周统计 本月统计(MySQL) select * from booking where month(booking_time) = month(curd ...

  10. 开发笔记 | JAVA获取微信步数+日周月排行榜的实现

    目录 功能描述 微信步数同步 获取我当日的步数 日排行,周排行,月排行榜的实现 功能描述 实现微信步数的同步(也就是获取当前的微信步数更新至数据库) 实现获取我当日的微信步数的查询 实现按照日排行,周 ...

最新文章

  1. 使IIS服务器支持下载 apk/ipa 安装包
  2. Android 程序打包及签名
  3. 利用权限禁止QQ的自动升级(QQUpdateCenter)
  4. mysql硬解析与软解析_SQL 软解析和硬解析详解
  5. 基于Dialog的MFC程序在启动时隐藏为托盘程序(三)
  6. H3C Wx5004无线控制器修改SSID名称
  7. 一次网络丢包问题排查的经历
  8. 第十五课 简单易懂的指针
  9. OpenGL与显卡驱动
  10. Android Parcel对象详解
  11. BZOJ3168. 【HEOI2013】钙铁锌硒维生素
  12. McAfee解读风险管理之道 企业安全面临新挑战
  13. 霍尔逻辑Hoare Logic
  14. 国外计算机学校排名,国外财经学校排名,财经学校
  15. halcon循环语句,条件句结构格式
  16. loadrunner的安装
  17. 上海中兴软件测试面试,中兴综合测评没做完
  18. 基于JAVA旅游景区预约管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  19. python tif转jpg_无法将tiff图像转换为jpg
  20. [Win32]Win32 SDK编程系列文章——键盘输入消息

热门文章

  1. python实现合并多个excel中同名的sheet
  2. COM ---- Inside COM Note
  3. 什么是域名服务器作用是啥,域名服务器的作用是什么?域名服务器原理及流程...
  4. 父级fixed_position:fixed相对父级元素定位而不是浏览器
  5. BZOJ5394: [Ynoi2016]炸脖龙(欧拉广义降幂)
  6. JS 基础: 你真的了解 console 吗?
  7. 动态代理实例——增强Waiter接口
  8. 如何让div靠右_div对齐 CSS实现DIV居中对齐 div居右对齐 div居左对齐
  9. Linux磁盘空间说明
  10. win7显示隐藏文件夹的方法