java elasticsearch聚合查询实例
发布时间:2020-12-15 03:13:43 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 index:schooltype:student---------------------------------------------------{"grade":"1","class":"1","name":"xiao 1"}{"grade":"1","name":"xia
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 index:school type:student --------------------------------------------------- {"grade":"1","class":"1","name":"xiao 1"} {"grade":"1","name":"xiao 2"} {"grade":"1","class":"2","name":"xiao 3"} {"grade":"1","name":"xiao 4"} {"grade":"1","name":"xiao 5"} package test; import java.util.Iterator; import java.util.Map; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.search.aggregations.Aggregation; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.terms.StringTerms; import org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket; import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder; import org.junit.Test; import utils.NesUtils; public class TestAggregation { @Test public void testAggregation() { SearchRequestBuilder srb = NesUtils.getSearcher("school"); srb.setTypes("student"); srb.setSearchType(SearchType.COUNT); TermsBuilder gradeTermsBuilder = AggregationBuilders.terms("gradeAgg").field("grade"); TermsBuilder classTermsBuilder = AggregationBuilders.terms("classAgg").field("class"); gradeTermsBuilder.subAggregation(classTermsBuilder); srb.addAggregation(gradeTermsBuilder); SearchResponse sr = srb.execute().actionGet(); Map<String,Aggregation> aggMap = sr.getAggregations().asMap(); StringTerms gradeTerms = (StringTerms) aggMap.get("gradeAgg"); Iterator<Bucket> gradeBucketIt = gradeTerms.getBuckets().iterator(); while(gradeBucketIt.hasNext()) { Bucket gradeBucket = gradeBucketIt.next(); System.out.println(gradeBucket.getKey() + "年级有" + gradeBucket.getDocCount() +"个学生。"); StringTerms classTerms = (StringTerms) gradeBucket.getAggregations().asMap().get("classAgg"); Iterator<Bucket> classBucketIt = classTerms.getBuckets().iterator(); while(classBucketIt.hasNext()) { Bucket classBucket = classBucketIt.next(); System.out.println(gradeBucket.getKey() + "年级" +classBucket.getKey() + "班有" + classBucket.getDocCount() +"个学生。"); } System.out.println(); } } } --------------------------------------------------- 1年级有5个学生。 1年级2班有3个学生。 1年级1班有2个学生。 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |