您好,欢迎来到画鸵萌宠网。
搜索
您的当前位置:首页ElasticSearchHighLevelRESTAPI【7】聚合

ElasticSearchHighLevelRESTAPI【7】聚合

来源:画鸵萌宠网
ElasticSearchHighLevelRESTAPI【7】聚合

获取平均值聚合⽰例,最⼤值、最⼩值、求和类似

public void aggregation(){

RestHighLevelClient client = elasticClient.getRestHighLevelClient(); SearchRequest searchRequest = new SearchRequest();

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); TermsAggregationBuilder aggregation = AggregationBuilders.terms(\"by_sex\")

.field(\"sex.keyword\"); //text类型不能⽤于索引或排序,必须转成keyword类型 aggregation.subAggregation(AggregationBuilders.avg(\"avg_age\") .field(\"age\")); //avg_age 为⼦聚合名称,名称可随意 searchSourceBuilder.aggregation(aggregation); searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = null; try {

searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); }

Aggregations aggregations = searchResponse.getAggregations(); Terms byCompanyAggregation = aggregations.get(\"by_sex\");

Terms.Bucket elasticBucket = byCompanyAggregation.getBucketByKey(\"⼥性\"); Avg averageAge = elasticBucket.getAggregations().get(\"avg_age\"); double avg = averageAge.getValue();

System.out.println(\"⼥性平均年龄:\"+avg);}

Stats统计

public void stats(){

RestHighLevelClient client = elasticClient.getRestHighLevelClient(); SearchRequest searchRequest = new SearchRequest();

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); TermsAggregationBuilder aggregation = AggregationBuilders.terms(\"by_sex\") .field(\"sex.keyword\"); //by_sex为聚合名称,名称可随意

aggregation.subAggregation(AggregationBuilders.stats(\"stat_age\") .field(\"age\")); //avg_age 为⼦聚合名称,名称可随意 searchSourceBuilder.aggregation(aggregation); searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = null; try {

searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); }

Aggregations aggregations = searchResponse.getAggregations(); Terms byCompanyAggregation = aggregations.get(\"by_sex\");

List buckets = byCompanyAggregation.getBuckets(); for (Terms.Bucket bucket : buckets) {

Stats statAge = bucket.getAggregations().get(\"stat_age\"); System.out.println(bucket.getKey()); //获取分组名称 System.out.println(\"平均值:\"+statAge.getAvg()); System.out.println(\"总数:\"+statAge.getSum());

System.out.println(\"最⼤值:\"+statAge.getMaxAsString()); System.out.println(\"最⼩值:\"+statAge.getMin()); } }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo8.com 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务