Elasticsearch与Linux(第十天)-在IDEA下操作es (3)

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());
        }

    }

猜你喜欢

转载自blog.csdn.net/qq_37208650/article/details/82620959