Chapter 31. Sorting Multivalue Buckets
Multivalue buckets—the terms
, histogram
, and date_histogram
—dynamically produce many buckets. How does Elasticsearch decide the order that
these buckets are presented to the user?
By default, buckets are ordered by doc_count
in descending order. This is a
good default because often we want to find the documents that maximize some
criteria: price, population, frequency. But sometimes you’ll want to modify this sort order, and there are a few ways to
do it, depending on the bucket.
Intrinsic Sorts
These sort modes are intrinsic to the bucket: they operate on data that bucket
generates, such as doc_count
. They share the same syntax but differ slightly
depending on the bucket being used.
Let’s perform a terms
aggregation but sort by doc_count
, in ascending order:
GET
/
cars
/
transactions
/
_search
?
search_type
=
count
{
"aggs"
:
{
"colors"
:
{
"terms"
:
{
"field"
:
"color"
,
"order"
:
{
"_count"
:
"asc"
}
}
}
}
}
We introduce an order
object into the aggregation, which allows us to sort on
one of several values:
_count
-
Sort by document count. Works with
terms
,histogram
,date_histogram
. _term
-
Sort by the string value of a term alphabetically. Works only with
terms
. _key
-
Sort ...
Get Elasticsearch: The Definitive Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.