es 聚合统计 affable • 2022-12-17 • 随笔 • 阅读 21 es 聚合统计 最新项目做ES 统计 就分享一下: 直接上代码 @Override public List esTjByMl(EsSearchDto esSearchDto) { List returnResult = new ArrayList<>(); String index = esSearchDto.getIndex(); try { SearchRequest request = new SearchRequest(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); request.indices(index); // 多字段模糊条件 BoolQueryBuilder boolQueryBuilder = boolQuery(); // 必须条件 精准查询 TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("sfsc", 0); boolQueryBuilder.must(termQueryBuilder); //开始结束时间 if (StrUtil.isNotEmpty(esSearchDto.getStartTime()) && StrUtil.isNotEmpty(esSearchDto.getEndTime())) { RangeQueryBuilder rangequerybuilder = QueryBuilders //传入时间 .rangeQuery("cjsj") .from(esSearchDto.getStartTime()).to(esSearchDto.getEndTime()); boolQueryBuilder.must(rangequerybuilder); } TermsAggregationBuilder termsBuilder = AggregationBuilders.terms("sum").field("mlmc.keyword"); searchSourceBuilder.query(boolQueryBuilder); searchSourceBuilder.timeout(new Timevalue(10, TimeUnit.SECONDS)); searchSourceBuilder.aggregation(termsBuilder); // 执行搜索 request.source(searchSourceBuilder); // client执行 SearchResponse response = client.search(request, RequestOptions.DEFAULT); // 获取统计后数据 Terms terms = response.getAggregations().get("sum"); for (int i = 0; i < terms.getBuckets().size(); i++) { HashMap map = new HashMap<>(16); // mlmc String mlmc = terms.getBuckets().get(i).getKey().toString(); //数量 Long sum = terms.getBuckets().get(i).getDocCount(); map.put("mlmc", mlmc); map.put("num", sum.intValue()); returnResult.add(map); } } catch (IOException e) { e.printStackTrace(); } return returnResult; } @Override public List esTjByBcqxAndMl(EsSearchDto esSearchDto) { List list = new ArrayList<>(); String index = esSearchDto.getIndex(); try { SearchRequest request = new SearchRequest(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); request.indices(index); // 多字段模糊条件 BoolQueryBuilder boolQueryBuilder = boolQuery(); // 必须条件 精准查询 TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("sfsc", 0); boolQueryBuilder.must(termQueryBuilder); //开始结束时间 if (StrUtil.isNotEmpty(esSearchDto.getStartTime()) && StrUtil.isNotEmpty(esSearchDto.getEndTime())) { RangeQueryBuilder rangequerybuilder = QueryBuilders //传入时间,目标格式2020-01-02T03:17:37.638Z .rangeQuery("cjsj") .from(esSearchDto.getStartTime()).to(esSearchDto.getEndTime()); boolQueryBuilder.must(rangequerybuilder); } //保存期限 if (StringUtils.isNotBlank(esSearchDto.getBcqx())) { // 精准查询 TermQueryBuilder termQueryBuilder2 = QueryBuilders.termQuery("bcqx", esSearchDto.getBcqx()); boolQueryBuilder.must(termQueryBuilder2); } searchSourceBuilder.query(boolQueryBuilder); searchSourceBuilder.timeout(new Timevalue(10, TimeUnit.SECONDS)); TermsAggregationBuilder termsBuilder2 = AggregationBuilders.terms("bcqxsum").field("bcqxmc.keyword"); TermsAggregationBuilder termsBuilder1 = AggregationBuilders.terms("mlsum").field("mlmc.keyword"); termsBuilder2.subAggregation(termsBuilder1); searchSourceBuilder.aggregation(termsBuilder2); // 执行搜索 request.source(searchSourceBuilder); // client执行 SearchResponse response = client.search(request, RequestOptions.DEFAULT); // 获取统计后数据 Terms terms = response.getAggregations().get("bcqxsum"); for (Terms.Bucket buck : terms.getBuckets()) { String bcqxmc = buck.getKeyAsString(); Terms mlsum = buck.getAggregations().get("mlsum"); for (Terms.Bucket mlbuck : mlsum.getBuckets()) { HashMap map = new HashMap<>(16); String mlmc = mlbuck.getKeyAsString(); long num = mlbuck.getDocCount(); map.put("bcqxmc", bcqxmc); map.put("mlmc", mlmc); map.put("num", num); list.add(map); } } } catch (IOException e) { e.printStackTrace(); } return list; } @Override public List esDaTjByGdsjAndMl(EsSearchDto esSearchDto) { List list = new ArrayList<>(); String index = esSearchDto.getIndex(); try { SearchRequest request = new SearchRequest(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); request.indices(index); // 多字段模糊条件 BoolQueryBuilder boolQueryBuilder = boolQuery(); // 必须条件 精准查询 TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("sfsc", 0); boolQueryBuilder.must(termQueryBuilder); //开始结束时间 if (StrUtil.isNotEmpty(esSearchDto.getStartTime()) && StrUtil.isNotEmpty(esSearchDto.getEndTime())) { RangeQueryBuilder rangequerybuilder = QueryBuilders //传入时间,目标格式2020-01-02T03:17:37.638Z .rangeQuery("cjsj") .from(esSearchDto.getStartTime()).to(esSearchDto.getEndTime()); boolQueryBuilder.must(rangequerybuilder); } searchSourceBuilder.query(boolQueryBuilder); searchSourceBuilder.timeout(new Timevalue(10, TimeUnit.SECONDS)); DateHistogramAggregationBuilder termsBuilder2 = AggregationBuilders.dateHistogram("gdsjsum") .field("gdsj").dateHistogramInterval(DateHistogramInterval.YEAR); //termsBuilder2.format("yyyy"); TermsAggregationBuilder termsBuilder1 = AggregationBuilders.terms("mlsum").field("mlmc.keyword"); termsBuilder2.subAggregation(termsBuilder1); searchSourceBuilder.aggregation(termsBuilder2); // 执行搜索 request.source(searchSourceBuilder); // client执行 SearchResponse response = client.search(request, RequestOptions.DEFAULT); // 获取统计后数据 Histogram terms = (Histogram) response.getAggregations().get("gdsjsum"); for (Histogram.Bucket buck : terms.getBuckets()) { String gdsj = buck.getKeyAsString(); DateTime time = DateUtil.date(new Long(gdsj)); Terms mlsum = buck.getAggregations().get("mlsum"); for (Terms.Bucket mlbuck : mlsum.getBuckets()) { HashMap map = new HashMap<>(16); String mlmc = mlbuck.getKeyAsString(); long num = mlbuck.getDocCount(); map.put("year", time.year()); map.put("mlmc", mlmc); map.put("num", num); list.add(map); } } } catch (IOException e) { e.printStackTrace(); } return list; } 欢迎分享,转载请注明来源:内存溢出原文地址: http://outofmemory.cn/zaji/5699857.html 多字 执行 条件 统计 传入 赞 (0) 打赏 微信扫一扫 支付宝扫一扫 affable 一级用户组 0 0 生成海报 中国二手房行业发展形势与“十四五”前景规划建议报告2022-2028年 上一篇 2022-12-17 Azkaban报错 下一篇 2022-12-17 发表评论 请登录后评论... 登录后才能评论 提交 评论列表(0条)
评论列表(0条)