赞
踩
- //创建search请求
- SearchRequest searchRequest = new SearchRequest();
- searchRequest.indices("jc_yl");
-
- //生成DSL查询语句
- SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
- //构建查询条件
- BoolQueryBuilder boolQueryBuilder=new BoolQueryBuilder();
- //时间范围的设定
- RangeQueryBuilder rangequerybuilder = QueryBuilders.rangeQuery("dataTime");
- rangequerybuilder.gte("2022-02-24T07:09:42.000Z");
- rangequerybuilder.lte("2022-02-25T07:09:42.000Z");
- boolQueryBuilder.filter(rangequerybuilder);
-
- searchSourceBuilder.query(boolQueryBuilder);
-
- AggregationBuilder aggregation = AggregationBuilders.sum("value_sum").field("value");
- searchSourceBuilder.aggregation(aggregation);
-
-
- searchRequest.source(searchSourceBuilder);
-
- //发送请求
- SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
-
-
- //处理搜索命中文档结果
- SearchHits hits = searchResponse.getHits();
- System.out.println("TotalHits===>{}"+hits.getTotalHits());
- System.out.println("Took===>{}"+searchResponse.getTook());
- hits.forEach(h ->{
- // System.out.println("===>"+h.getSourceAsString());
- });
- //获取聚合的结果
- Map<String,Double> map = new LinkedHashMap<>();
- Aggregations aggregations = searchResponse.getAggregations();
-
- Sum sum = aggregations.get("value_sum");
-
- System.out.println("!!!!==>jjjjjhhhhh"+sum.getValue());

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

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。