| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | [[java-aggs-bucket-terms]]==== Terms AggregationHere is how you can use{ref}/search-aggregations-bucket-terms-aggregation.html[Terms Aggregation]with Java API.===== Prepare aggregation requestHere is an example on how to create the aggregation request:[source,java]--------------------------------------------------AggregationBuilders    .terms("genders")    .field("gender");--------------------------------------------------===== Use aggregation responseImport Aggregation definition classes:[source,java]--------------------------------------------------import org.elasticsearch.search.aggregations.bucket.terms.Terms;--------------------------------------------------[source,java]--------------------------------------------------// sr is here your SearchResponse objectTerms genders = sr.getAggregations().get("genders");// For each entryfor (Terms.Bucket entry : genders.getBuckets()) {    entry.getKey();      // Term    entry.getDocCount(); // Doc count}--------------------------------------------------===== OrderImport bucket ordering strategy classes:[source,java]--------------------------------------------------import org.elasticsearch.search.aggregations.BucketOrder;--------------------------------------------------Ordering the buckets by their `doc_count` in an ascending manner:[source,java]--------------------------------------------------AggregationBuilders    .terms("genders")    .field("gender")    .order(BucketOrder.count(true))--------------------------------------------------Ordering the buckets alphabetically by their terms in an ascending manner:[source,java]--------------------------------------------------AggregationBuilders    .terms("genders")    .field("gender")    .order(BucketOrder.key(true))--------------------------------------------------Ordering the buckets by single value metrics sub-aggregation (identified by the aggregation name):[source,java]--------------------------------------------------AggregationBuilders    .terms("genders")    .field("gender")    .order(BucketOrder.aggregation("avg_height", false))    .subAggregation(        AggregationBuilders.avg("avg_height").field("height")    )--------------------------------------------------Ordering the buckets by multiple criteria:[source,java]--------------------------------------------------AggregationBuilders    .terms("genders")    .field("gender")    .order(BucketOrder.compound( // in order of priority:        BucketOrder.aggregation("avg_height", false), // sort by sub-aggregation first        BucketOrder.count(true))) // then bucket count as a tie-breaker    .subAggregation(        AggregationBuilders.avg("avg_height").field("height")    )--------------------------------------------------
 |