ES 当天数据按小时统计

//存放时间及统计数据
Map<Object, Long> tempMap = this.getTimeMap();   

String esIndex = "log_app_2021-12-16";
        //构造检索条件
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        //测试代码 我将数据写死了
searchSourceBuilder.query(QueryBuilders.queryStringQuery("console").field("name"));
        DateHistogramAggregationBuilder dateHistogramAggregationBuilder = AggregationBuilders.dateHistogram("aggs").field("checkTime").dateHistogramInterval(DateHistogramInterval.hours(1));

        searchSourceBuilder.aggregation(dateHistogramAggregationBuilder);
        Search sb = new Search.Builder(searchSourceBuilder.toString()).addIndex(esIndex).build();
        try {
            SearchResult result = jestClient.execute(sb);
            if (result != null && result.isSucceeded()) {
                TermsAggregation aggregation = result.getAggregations().getAggregation("aggs", TermsAggregation.class);
                if (aggregation != null && aggregation.getBuckets() != null) {
                    aggregation.getBuckets().forEach(entry -> {
//我用的是自己的时间进行计算的所以时区要修改一下
                                long temp = 8*60*60*1000;
                                String timestamp = (Long.parseLong(entry.getKey())-temp)+"";
                                String key = DateUtils.getYearMonthDay(new Date(Long.parseLong(timestamp)), "HH:mm");
                                tempMap.put(key, entry.getCount());
                    });
                }
            }
        }catch (Exception ex){
            ex.printStackTrace();
        }
   public static String getYearMonthDay(Date date,String formatPatten){
        try {
            formatPatten = org.springframework.util.StringUtils.isEmpty(formatPatten)? YYYY_MM_DD : formatPatten;
            return new SimpleDateFormat(formatPatten).format(date);
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
   private Map<Object,Long> getTimeMap(){
        Map<Object,Long> map = new LinkedHashMap<>();
        LocalDateTime of = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
        long l = of.toInstant(ZoneOffset.of("+8")).toEpochMilli();
        while(l<=System.currentTimeMillis()){
            map.put(DateUtils.getYearMonthDay(new Date(l), "HH:mm"),0L);
            l+=60*60*1000;
        }
        return map;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值