Elasearch时间查询及分组统计
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,/** * 从ES中查询数据 * ES的时间如果不设置的话,默认是UTC时间,与北京时间相差8个小时,在查询统计的时候,如果不做统计的话,数据肯定是不准确的。 * ES版本:6.4.1。使用的jav
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
国外物流数据库
宝塔的数据库如何打开
我的世界es服务器怎么加材质包
电工和网络技术相通吗
无线网络安全技术发展前景
临沂市越翔网络技术有限公司
预言网络安全态势
视频服务器硬盘格式化
数据库增删改查还有啥
江苏芯融网络技术研究院好吗
普陀区品牌软件开发诚信合作
商丘市网络安全课堂收费吗
java服务器高级编程
质量网络技术服务生产过程
学习软件开发的课程视频
vivos1pro网络技术
计算器软件开发创新项目
国家网络安全手抄报四年级
山东电脑软件开发机构
软件开发前期无收入怎么做账
数据库营业时间
软件开发工程湖南岚鸿
绕过安全狗下载数据库
全光网络技术联盟成员
数据库表不让编辑
sap采购申请行项目数据库
网络安全法具体包括
高中生如何形成网络安全意识
美国政府报告文摘题录数据库
网络安全阀