1、terms分組查詢
//分組聚合 @Test public void test40() throws UnknownHostException{ //1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名稱 Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //2.創建訪問ES服務器的客戶端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300)); //以年齡分組,組名為:terms AggregationBuilder builder = AggregationBuilders.terms("terms").field("age"); SearchResponse response = client.prepareSearch("lib3").addAggregation(builder).execute().actionGet(); Terms terms = response.getAggregations().get("terms"); for(Terms.Bucket term:terms.getBuckets()) { System.out.println(term.getKey()+" "+term.getDocCount()); } }
2、terms query聚合查詢
//filter聚合 @Test public void test41() throws UnknownHostException{ //1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名稱 Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //2.創建訪問ES服務器的客戶端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300)); //以年齡分組,並查詢年齡為20的有多少人 QueryBuilder queryBuilder = QueryBuilders.termQuery("age", 20); AggregationBuilder builder = AggregationBuilders.filter("filter",queryBuilder); SearchResponse response = client.prepareSearch("lib3").addAggregation(builder).execute().actionGet(); Filter filter = response.getAggregations().get("filter"); System.out.println(filter.getDocCount()); }
3、filters聚合
//filters聚合:指定多個過濾條件 @Test public void test42() throws UnknownHostException{ //1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名稱 Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //2.創建訪問ES服務器的客戶端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300)); //查詢heijiu changge中各有多少個文檔 QueryBuilder queryBuilder = QueryBuilders.termQuery("interests", "hejiu"); QueryBuilder queryBuilder2 = QueryBuilders.termQuery("interests", "changge"); AggregationBuilder builder = AggregationBuilders.filters("filters",queryBuilder,queryBuilder2); SearchResponse response = client.prepareSearch("lib3").addAggregation(builder).execute().actionGet(); Aggregation filter = response.getAggregations().get("filters"); System.out.println(filter.toString()); }
4、range聚合
//range聚合:范圍分組過濾條件 @Test public void test43() throws UnknownHostException{ //1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名稱 Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //2.創建訪問ES服務器的客戶端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300)); //統計年齡在50以下的,年齡在25至50之間,年齡在25以上的人數 AggregationBuilder builder = AggregationBuilders .range("range") .field("age") .addUnboundedTo(50) .addRange(25,50) .addUnboundedFrom(25); SearchResponse response = client.prepareSearch("lib3").addAggregation(builder).execute().actionGet(); Aggregation filter = response.getAggregations().get("range"); System.out.println(filter.toString()); }
5、missing聚合
//missing聚合:為空聚合統計 @Test public void test44() throws UnknownHostException{ //1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名稱 Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //2.創建訪問ES服務器的客戶端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300)); //統計價格為空的個數 AggregationBuilder builder = AggregationBuilders.missing("missing").field("price"); SearchResponse response = client.prepareSearch("lib4").addAggregation(builder).execute().actionGet(); Aggregation filter = response.getAggregations().get("missing"); System.out.println(filter.toString()); }
下一篇博客本人將書寫java操作elasticsearch實現集群管理。對后期博客感興趣的朋友可以關注交流,轉發請說明出處,本人的博客地址為:https://www.cnblogs.com/chenyuanbo/
技術在於交流!