ES aggregation by multiple terms
Please add a Junit test that will query the ES for count(species)
, aggregated by genus
, species
-- an aggregation of species
within genus
. See https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-aggregations-bucket-terms-aggregation.html
Use JUnit to print ES query and then apply it to your indexed ES.
GET /_search
{
"aggs" : {
"genus" : {
"terms" : {
"field" : "genus",
// "order" : { "playback_stats.max" : "desc" }
},
"aggs" : {
// "playback_stats" : { "stats" : { "field" : "play_count" } }
"species": { "terms": { "field": "species" } },
"aggs" : {
// "playback_stats" : { "stats" : { "field" : "play_count" } }
"origin.iso3166": { "terms": { "field": "origin.iso3166" } }
}
}
}
}
}
The result should be something like:
genus |
species |
count |
---|---|---|
Arabidopsis | Arabidopsis thaliana | 686,602 |
Hordeum | Hordeum vulgare | 235,395 |
Hordeum | Hordeum Hordeum vulgare | 17,788 |
Hordeum | ... | . |
Triticum | Triticum aestivum | 332,060 |
Triticum | Triticum turgidum | 73,364 |
Triticum | Triticum triticum aestivum | 29,196 |
How can we control the number of results?