Elasearch时间查询及分组统计
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,/** * 从ES中查询数据 * ES的时间如果不设置的话,默认是UTC时间,与北京时间相差8个小时,在查询统计的时候,如果不做统计的话,数据肯定是不准确的。 * ES版本:6.4.1。使用的jav
千家信息网最后更新 2026年10月31日Elasearch时间查询及分组统计
/** * 从ES中查询数据 * ES的时间如果不设置的话,默认是UTC时间,与北京时间相差8个小时,在查询统计的时候,如果不做统计的话,数据肯定是不准确的。 * ES版本:6.4.1。使用的javaApi是 Elasearch High Level Rest Client6.4 * @param monthDate (patten:yyyy-MM) * @return List统计结果。 */public List queryOrderCountDataFromEs(String monthDate) { try { /** * 条件查询(时间范围) */ String startTime = DateUtil.getMonthFirstDay(DateUtil.dateStr2Date(monthDate + "-01", DateUtil.PATTERN_DTSHORTLINE)); String endTime = DateUtil.getMonthLastDay(DateUtil.dateStr2Date(monthDate + "-01", DateUtil.PATTERN_DTSHORTLINE)); Date s = DateUtil.dateStr2Date(startTime + " 00:00:00", DateUtil.PATTERN_SIMPLE); Date e = DateUtil.dateStr2Date(endTime + " 23:59:59", DateUtil.PATTERN_SIMPLE); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); boolQuery.must(QueryBuilders.rangeQuery("order_time").gte(s).lte(e)); searchSourceBuilder.query(boolQuery); /** * 分组聚合 */ TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("orderStatusCount").field("order_status"); aggregationBuilder.size(ESConstants.ES_AGG_SIZE); aggregationBuilder.collectMode(Aggregator.SubAggCollectionMode.BREADTH_FIRST); DateHistogramAggregationBuilder field = AggregationBuilders.dateHistogram("orderTime").field("order_time"); /* *时间统计的时候,注意时差问题。统计的时候,设置时区即可,不需要设置偏移量。 *offset偏移量这个参数,在某些时刻也是有用的,它可以自己定义一天的开始,比如设置从第一天的3点到第二天的3点为一天,默认都是从0点开始0点结束算做一天的 */ field.dateHistogramInterval(DateHistogramInterval.DAY).timeZone(DateTimeZone.getDefault());//.offset("+8h"); aggregationBuilder.subAggregation(field); searchSourceBuilder.aggregation(aggregationBuilder); SearchResponse response = client.searchDocument(ESConstants.ES_EC_ORDER_INDEX, ESConstants.ES_EC_ORDER_TYPE, searchSourceBuilder); //结果处理 Terms byPath = response.getAggregations().get("orderStatusCount"); List extends Terms.Bucket> buckets = byPath.getBuckets(); List resultVos = new ArrayList<>(); for (Terms.Bucket bucket : buckets) { Histogram agg = bucket.getAggregations().get("orderTime"); for (Histogram.Bucket entry : agg.getBuckets()) { SysCountResultVo sysCountVo = new SysCountResultVo(); sysCountVo.setLocalPath(bucket.getKeyAsString()); long t = ((DateTime)entry.getKey()).getMillis(); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(t); sysCountVo.setDimension(DateUtil.date2DateStr(cal.getTime(),DateUtil.PATTERN_SIMPLE)); sysCountVo.setTimes(entry.getDocCount()); resultVos.add(sysCountVo); } } return resultVos; } catch (Exception e) { logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>从ES中查询数据失败"); e.printStackTrace(); return null; }}
时间
统计
查询
数据
时候
结果
偏移
分组
参数
小时
时刻
时区
时差
有用
条件
点到
版本
范围
问题
北京
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司简介
高科技互联网
厦门中拓互联网络科技有限公司
互联网通讯科技
互联网 科技
北京互联网科技有限公司
云电互联网科技
汇久创客互联网科技
沃里互联网科技
互联网科技股有哪些
北京华百购互联网科技有限公司
互联网对科技的发展
浙江互联网科技研学营
哈尔滨屹滨互联网科技有限公司
米聚互联网科技南京有限公司排面
扫呗互联网科技有限公司
科技信息时代互联网发展
安徽零酒互联网科技有限公司
互联网科技的前景
三亚科技创新互联网基地
科技互联网龙头
互联网核心科技是什么
苏州互联网科技贷款公司
唐信互联网科技 大连
互联网 科技馆
科技赋能互联网健康
字节跳动和互联网科技
湖北码尼互联网科技有限公司电话
有人说阿里系是互联网科技企业
版纳互联网科技选哪家