1.聚合查询
/**
* 聚合查询
*/
@Test
public void test3(){
// aggMax 是固定的,求最大值
/*
AggregationBuilder agg = AggregationBuilders.max("aggMax").field("age");
SearchResponse response = client.prepareSearch("lib3")
.addAggregation(agg)
.get();
Max max = response.getAggregations().get("aggMax");
System.out.println(max.getValue());
*/
// aggMin 是固定的,求最小值
/*
AggregationBuilder agg = AggregationBuilders.min("aggMin").field("age");
SearchResponse response = client.prepareSearch("lib3")
.addAggregation(agg)
.get();
Min min = response.getAggregations().get("aggMin");
System.out.println(min.getValue());
*/
// aggAvg 是固定的,求平均值
/*
AggregationBuilder agg = AggregationBuilders.avg("aggAvg").field("age");
SearchResponse response = client.prepareSearch("lib3")
.addAggregation(agg)
.get();
Avg avg = response.getAggregations().get("aggAvg");
System.out.println(avg.getValue());
*/
// aggSum 是固定的,求总和
/*
AggregationBuilder agg = AggregationBuilders.sum("aggSum").field("age");
SearchResponse response = client.prepareSearch("lib3")
.addAggregation(agg)
.get();
Sum sum = response.getAggregations().get("aggSum");
System.out.println(sum.getValue());
*/
// aggCardinality 是固定的,求基数 互不相同的值
AggregationBuilder agg = AggregationBuilders.cardinality("aggCardinality").field("age");
SearchResponse response = client.prepareSearch("lib3")
.addAggregation(agg)
.get();
Cardinality cardinality = response.getAggregations().get("aggCardinality");
System.out.println(cardinality.getValue());
}
2.分组查询
// 分组查询
@Test
public void test5(){
// 根据age进行分组
AggregationBuilder agg = AggregationBuilders.terms("terms").field("age");
SearchResponse response = client.prepareSearch("lib3")
.addAggregation(agg)
.execute()
.actionGet();
Terms terms = response.getAggregations().get("terms");
for (Terms.Bucket entry:terms.getBuckets()){
System.out.println(entry.getKeyAsString()+":"+entry.getDocCount());
}
}
3.filter聚合
// filter聚合
@Test
public void test6(){
QueryBuilder query = QueryBuilders.termQuery("age",20);
AggregationBuilder agg = AggregationBuilders.filter("filter",query);
SearchResponse response = client.prepareSearch("lib3")
.addAggregation(agg)
.execute()
.actionGet();
Filter filter = response.getAggregations().get("filter");
System.out.println(filter.getDocCount());
}
4.集群管理
//集群管理
@Test
public void test8(){
ClusterHealthResponse healths = client.admin().cluster().prepareHealth().get();
String clusterName = healths.getClusterName();
System.out.println("clusterName="+clusterName);
int numberDataNodes = healths.getNumberOfDataNodes();
System.out.println("numberDataNodes="+numberDataNodes);
int numberOfNodes = healths.getNumberOfNodes();
System.out.println("numberOfNodes="+numberOfNodes);
for (ClusterIndexHealth health:healths.getIndices().values()){
String index = health.getIndex();
int numberOfShards = health.getNumberOfShards();
int numberOfReplicas = health.getNumberOfReplicas();
System.out.printf("index=%d, numberOfShards=%d, numberOfReplicas=%d",index,numberOfShards,numberOfReplicas);
ClusterHealthStatus status = health.getStatus();
System.out.println(status.toString());
}
}