版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou_fan_xi/article/details/88722696
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd"); Date parse1 = simpleDateFormat1.parse(startDate); Date parse2 = simpleDateFormat1.parse(endDate); queryBuilder.must(QueryBuilders.rangeQuery("createDate").gte(parse1.getTime())); queryBuilder.must(QueryBuilders.rangeQuery("createDate").lte(parse2.getTime())); //根据时间分组统计总数 DateHistogramAggregationBuilder fieldBuilder = AggregationBuilders.dateHistogram("createDate").field("createDate").dateHistogramInterval(DateHistogramInterval.MONTH); ValueCountAggregationBuilder caseNumBuilder = AggregationBuilders.count("caseNum").field("id"); //分组查询拼接求各组数 SearchQuery searchQuery = new NativeSearchQueryBuilder() .withIndices(Constants.CASE_INFO) .withTypes(Constants.CASE_INFO) .withSearchType(SearchType.DEFAULT) .withQuery(queryBuilder) .addAggregation(fieldBuilder.subAggregation(caseNumBuilder)).build(); logger.info(searchQuery.toString()); Aggregations aggregations = elasticsearchTemplate.query(searchQuery, SearchResponse::getAggregations); Map<String, Aggregation> aggregationMap = aggregations.asMap(); HomePageThreeResponse homePageThreeResponses = new HomePageThreeResponse(); Histogram count = (Histogram) aggregationMap.get("createDate"); List<Integer> caseCountList = new ArrayList<>(); List<String> dayList = new ArrayList<>(); for (Histogram.Bucket bucket : count.getBuckets()) { //设置有数据的时间 String keyAsString = bucket.getKeyAsString(); long lt = new Long(keyAsString); Date date = new Date(lt); Calendar c = Calendar.getInstance(); c.setTime(date); int month = c.get(Calendar.MONTH) + 1; dayList.add(String.valueOf(month)); InternalValueCount caseNumCount = bucket.getAggregations().get("caseNum"); Integer num = Integer.valueOf(Long.toString(caseNumCount.getValue())); caseCountList.add(num); }