当前位置:   article > 正文

RestHighLevelClient 对ES聚合查询_resthighlevelclient聚合查询

resthighlevelclient聚合查询
  1. //创建search请求
  2. SearchRequest searchRequest = new SearchRequest();
  3. searchRequest.indices("jc_yl");
  4. //生成DSL查询语句
  5. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
  6. //构建查询条件
  7. BoolQueryBuilder boolQueryBuilder=new BoolQueryBuilder();
  8. //时间范围的设定
  9. RangeQueryBuilder rangequerybuilder = QueryBuilders.rangeQuery("dataTime");
  10. rangequerybuilder.gte("2022-02-24T07:09:42.000Z");
  11. rangequerybuilder.lte("2022-02-25T07:09:42.000Z");
  12. boolQueryBuilder.filter(rangequerybuilder);
  13. searchSourceBuilder.query(boolQueryBuilder);
  14. AggregationBuilder aggregation = AggregationBuilders.sum("value_sum").field("value");
  15. searchSourceBuilder.aggregation(aggregation);
  16. searchRequest.source(searchSourceBuilder);
  17. //发送请求
  18. SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
  19. //处理搜索命中文档结果
  20. SearchHits hits = searchResponse.getHits();
  21. System.out.println("TotalHits===>{}"+hits.getTotalHits());
  22. System.out.println("Took===>{}"+searchResponse.getTook());
  23. hits.forEach(h ->{
  24. // System.out.println("===>"+h.getSourceAsString());
  25. });
  26. //获取聚合的结果
  27. Map<String,Double> map = new LinkedHashMap<>();
  28. Aggregations aggregations = searchResponse.getAggregations();
  29. Sum sum = aggregations.get("value_sum");
  30. System.out.println("!!!!==>jjjjjhhhhh"+sum.getValue());

  1. 聚合+子聚合
  2. /获取连接
  3. RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("your ip", 9200, "http")));
  4. //设置索引
  5. SearchRequest searchRequest = new SearchRequest("your index");
  6. //构建查询
  7. SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
  8. BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
  9. MatchQueryBuilder matchQueryBuilder1 = QueryBuilders.matchQuery("text","test");
  10. RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("Time");
  11. //起始时间
  12. rangeQueryBuilder.gte("2020-04-01T00:00:00+08:00");
  13. //结束时间
  14. rangeQueryBuilder.lte("2020-04-31T23:59:59+08:00");
  15. boolBuilder.must(matchQueryBuilder1).must(rangeQueryBuilder);
  16. sourceBuilder.query(boolBuilder);
  17. //按时间聚合,求TX的和
  18. //DateHistogramInterval.minutes(5)是指按5分钟聚合
  19. //format("yyyy-MM-dd HH:mm")是指聚合的结果的Time的格式
  20. //BucketOrder.aggregation("tx_sum", false)对聚合结果的排序 true为正序 false为倒序
  21. AggregationBuilder aggregation = AggregationBuilders.dateHistogram("time_count").field("Time").fixedInterval(DateHistogramInterval.minutes(5)).format("yyyy-MM-dd HH:mm")
  22. .order(BucketOrder.aggregation("tx_sum", false));
  23. aggregation.subAggregation(AggregationBuilders.sum("tx_sum").field("Tx"));
  24. sourceBuilder.aggregation(aggregation);
  25. searchRequest.source(sourceBuilder);
  26. //发送请求
  27. SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
  28. //获取聚合的结果
  29. Map<String,Double> map = new LinkedHashMap<>();
  30. Aggregations aggregations = searchResponse.getAggregations();
  31. Aggregation aggregation1 = aggregations.get("time_count");
  32. List<? extends Histogram.Bucket> buckets = ((Histogram)aggregation1).getBuckets();
  33. for (Histogram.Bucket bucket : buckets){
  34. String keyAsString = bucket.getKeyAsString();
  35. Sum sum = bucket.getAggregations().get("tx_sum");
  36. map.put(keyAsString,sum.getValue());
  37. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/994873
推荐阅读
相关标签
  

闽ICP备14008679号