ElasticSearch 6.x 学习笔记:33.Java API之指标聚合
2018-02-23 10:51
901 查看
0、自定义工具类
https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.1/java-aggs.htmlTo build aggregation requests, use AggregationBuilders helpers. Just import them in your class:
import org.elasticsearch.search.aggregations.AggregationBuilders;
package cn.hadron.es; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.metrics.avg.Avg; import org.elasticsearch.search.aggregations.metrics.cardinality.Cardinality; import org.elasticsearch.search.aggregations.metrics.max.Max; import org.elasticsearch.search.aggregations.metrics.min.Min; import org.elasticsearch.search.aggregations.metrics.percentiles.Percentiles; import org.elasticsearch.search.aggregations.metrics.stats.Stats; import org.elasticsearch.search.aggregations.metrics.stats.extended.ExtendedStats; import org.elasticsearch.search.aggregations.metrics.sum.Sum; import org.elasticsearch.search.aggregations.metrics.valuecount.ValueCount; public class AggregationUtil { private String index="index"; private TransportClient client = ESUtil.getClient(); public AggregationUtil(String index){ this.index=index; } ... ... }
https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.1/_metrics_aggregations.html
1、max统计
/** * 最大值统计 * @param field * @return */ public double max(String field){ AggregationBuilder agg=AggregationBuilders.max("aggMax").field(field); SearchResponse response=client.prepareSearch(index).addAggregation(agg).get(); Max max=response.getAggregations().get("aggMax"); return max.getValue(); }
2、min统计
/** * 最小值统计 * @param field * @return */ public double min(String field){ AggregationBuilder agg=AggregationBuilders.min("aggMin").field(field); SearchResponse response=client.prepareSearch(index).addAggregation(agg).get(); Min min=response.getAggregations().get("aggMin"); return min.getValue(); }
3、sum统计
/** * 合计统计 * @param field * @return */ public double sum(String field){ AggregationBuilder agg=AggregationBuilders.sum("aggSum").field(field); SearchResponse response=client.prepareSearch(index).addAggregation(agg).get(); Sum sum=response.getAggregations().get("aggSum"); return sum.getValue(); }
4、avg统计
/** * 平均值统计 * @param field * @return */ public double avg(String field){ AggregationBuilder agg=AggregationBuilders.avg("aggAvg").field(field); SearchResponse response=client.prepareSearch(index).addAggregation(agg).get(); Avg avg=response.getAggregations().get("aggAvg"); return avg.getValue(); }
5、基本统计
/** * 基本统计 * @param field * @return */ public Stats stats(String field){ AggregationBuilder agg=AggregationBuilders.stats("aggStats").field(field); SearchResponse response=client.prepareSearch(index).addAggregation(agg).execute().actionGet(); return response.getAggregations().get("aggStats"); }
6、高级统计
/** * 高级统计 * @param field * @return */ public ExtendedStats extendedStats(String field){ AggregationBuilder agg=AggregationBuilders.extendedStats("exStats").field(field); SearchResponse response=client.prepareSearch(index).addAggregation(agg).execute().actionGet(); return response.getAggregations().get("exStats"); }
7、基数统计
/** * 基数统计 * @param field * @return */ public double cardinality(String field){ AggregationBuilder agg=AggregationBuilders.cardinality("cardinality").field(field); SearchResponse response=client.prepareSearch(index).addAggregation(agg).get(); Cardinality c=response.getAggregations().get("cardinality"); return c.getValue(); }
8、百分位统计
/** * 百分位统计 * @param field * @return */ public Percentiles percentiles(String field){ AggregationBuilder agg=AggregationBuilders.percentiles("percentiles").field(field); SearchResponse response=client.prepareSearch(index).addAggregation(agg).execute().actionGet(); return response.getAggregations().get("percentiles"); }
9、文档数量统计
/** * 文档数量统计 * @param field * @return */ public double valueCount(String field){ AggregationBuilder agg=AggregationBuilders.count("valueCount").field(field); SearchResponse response=client.prepareSearch(index).addAggregation(agg).execute().actionGet(); ValueCount count=response.getAggregations().get("valueCount"); return count.getValue(); }
10、测试样例
(1)maxpackage cn.hadron; import cn.hadron.es.AggregationUtil; public class AggregationDemo { public static void main(String[] args) { AggregationUtil util=new AggregationUtil("my-index"); double max=util.max("age"); System.out.println("max age="+max); } }
max age=31.0
(2)min
public static void main(String[] args) { AggregationUtil util=new AggregationUtil("my-index"); double min=util.min("salary"); System.out.println("min salary="+min); }
min salary=15000.0
(3)avg
public static void main(String[] args) { AggregationUtil util=new AggregationUtil("my-index"); double avg=util.avg("salary"); System.out.println("avg salary="+avg); }
avg salary=17500.0
(4)sum
public static void main(String[] args) { AggregationUtil util=new AggregationUtil("my-index"); double sum=util.sum("salary"); System.out.println("sum salary="+sum); }
sum salary=105000.0
(5)stats
package cn.hadron; import cn.hadron.es.AggregationUtil; import org.elasticsearch.search.aggregations.metrics.stats.Stats; public class AggregationDemo { public static void main(String[] args) { AggregationUtil util=new AggregationUtil("my-index"); Stats stats=util.stats("salary"); System.out.println("min="+stats.getMin()); System.out.println("max="+stats.getMax()); System.out.println("avg="+stats.getAvg()); System.out.println("sum="+stats.getSum()); System.out.println("count="+stats.getCount()); } }
min=15000.0 max=20000.0 avg=17500.0 sum=105000.0 count=6
(6)extendedStats
package cn.hadron; import cn.hadron.es.AggregationUtil; import org.elasticsearch.search.aggregations.metrics.stats.extended.ExtendedStats; public class AggregationDemo { public static void main(String[] args) { AggregationUtil util=new AggregationUtil("my-index"); ExtendedStats stats=util.extendedStats("salary"); System.out.println("min="+stats.getMin()); System.out.println("max="+stats.getMax()); System.out.println("avg="+stats.getAvg()); System.out.println("sum="+stats.getSum()); System.out.println("count="+stats.getCount()); System.out.println("stdDeviation="+stats.getStdDeviation()); System.out.println("sumOfSquares="+stats.getSumOfSquares()); System.out.println("variance="+stats.getVariance()); } }
min=15000.0 max=20000.0 avg=17500.0 sum=105000.0 count=6
stdDeviation=2061.5528128088304
sumOfSquares=1.863E9
variance=4250000.0
(7)cardinality
public static void main(String[] args) { AggregationUtil util=new AggregationUtil("my-index"); double cardinality=util.cardinality("salary"); System.out.println("cardinality="+cardinality); }
4个工资级别
cardinality=4.0
(8)percentiles
package cn.hadron; import cn.hadron.es.AggregationUtil; import org.elasticsearch.search.aggregations.metrics.percentiles.Percentile; import org.elasticsearch.search.aggregations.metrics.percentiles.Percentiles; public class AggregationDemo { public static void main(String[] args) { AggregationUtil util=new AggregationUtil("my-index"); Percentiles percent=util.percentiles("salary"); for(Percentile p:percent) { System.out.printf("percent [%f],value [%f]\n",p.getPercent(),p.getValue()); } } }
percent [1.000000],value [15000.000000] percent [5.000000],value [15000.000000] percent [25.000000],value [15500.000000] percent [50.000000],value [17500.000000] percent [75.000000],value [19500.000000] percent [95.000000],value [20000.000000] percent [99.000000],value [20000.000000]
(9)valueCount
public static void main(String[] args) { AggregationUtil util=new AggregationUtil("my-index"); double count=util.valueCount("salary"); System.out.println("count="+count); }
count=6.0
相关文章推荐
- ElasticSearch 6.x 学习笔记:34.Java API之桶聚合
- ElasticSearch 6.x 学习笔记:24.Java API连接Elasticsearch
- ElasticSearch 6.x 学习笔记:26.Java API之文档添加
- ElasticSearch 6.x 学习笔记:30.Java API之全文查询
- ElasticSearch 6.x 学习笔记:29.Java API之Match All Query
- ElasticSearch 6.x 学习笔记:23.Java API之Maven项目
- ElasticSearch 6.x 学习笔记:32.Java API之复合查询
- ElasticSearch 6.x 学习笔记:35.Java API之集群管理
- ElasticSearch 6.x 学习笔记:25.Java API之索引管理
- ElasticSearch 6.x 学习笔记:27.Java API之文档管理
- ElasticSearch 6.x 学习笔记:31.Java API之词项查询
- ElasticSearch 6.x 学习笔记:21.指标聚合
- ElasticSearch 6.x 学习笔记:28.Java API之文档批量操作
- ElasticSearch 6.x 学习笔记:22.桶聚合
- ElasticSearch学习笔记-JavaAPI操作记录
- java学习笔记33
- 黑马程序员-Java学习笔记之API(其他类)
- Java学习笔记之常用API学习笔记2
- JAVA学习笔记(十八)- API常用类
- Java学习笔记之常用API学习笔记1