123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- [[java-aggs-bucket-terms]]
- ==== Terms Aggregation
- Here is how you can use
- {ref}/search-aggregations-bucket-terms-aggregation.html[Terms Aggregation]
- with Java API.
- ===== Prepare aggregation request
- Here is an example on how to create the aggregation request:
- [source,java]
- --------------------------------------------------
- AggregationBuilders
- .terms("genders")
- .field("gender");
- --------------------------------------------------
- ===== Use aggregation response
- Import Aggregation definition classes:
- [source,java]
- --------------------------------------------------
- import org.elasticsearch.search.aggregations.bucket.terms.Terms;
- --------------------------------------------------
- [source,java]
- --------------------------------------------------
- // sr is here your SearchResponse object
- Terms genders = sr.getAggregations().get("genders");
- // For each entry
- for (Terms.Bucket entry : genders.getBuckets()) {
- entry.getKey(); // Term
- entry.getDocCount(); // Doc count
- }
- --------------------------------------------------
- ==== Order
- Ordering the buckets by their `doc_count` in an ascending manner:
- [source,java]
- --------------------------------------------------
- AggregationBuilders
- .terms("genders")
- .field("gender")
- .order(Terms.Order.count(true))
- --------------------------------------------------
- Ordering the buckets alphabetically by their terms in an ascending manner:
- [source,java]
- --------------------------------------------------
- AggregationBuilders
- .terms("genders")
- .field("gender")
- .order(Terms.Order.term(true))
- --------------------------------------------------
- Ordering the buckets by single value metrics sub-aggregation (identified by the aggregation name):
- [source,java]
- --------------------------------------------------
- AggregationBuilders
- .terms("genders")
- .field("gender")
- .order(Terms.Order.aggregation("avg_height", false))
- .subAggregation(
- AggregationBuilders.avg("avg_height").field("height")
- )
- --------------------------------------------------
|