## Sorting by a Metricedit

Often, you’ll find yourself wanting to sort based on a metric’s calculated value. For our car sales analytics dashboard, we may want to build a bar chart of sales by car color, but order the bars by the average price, ascending.

We can do this by adding a metric to our bucket, and then referencing that
metric from the `order`

parameter:

GET /cars/transactions/_search { "size" : 0, "aggs" : { "colors" : { "terms" : { "field" : "color", "order": { "avg_price" : "asc" } }, "aggs": { "avg_price": { "avg": {"field": "price"} } } } } }

The average price is calculated for each bucket. | |

Then the buckets are ordered by the calculated average in ascending order. |

This lets you override the sort order with any metric, simply by referencing
the name of the metric. Some metrics, however, emit multiple values. The
`extended_stats`

metric is a good example: it provides half a dozen individual
metrics.

If you want to sort on a multivalue metric, you just need to use the dot-path to the metric of interest:

GET /cars/transactions/_search { "size" : 0, "aggs" : { "colors" : { "terms" : { "field" : "color", "order": { "stats.variance" : "asc" } }, "aggs": { "stats": { "extended_stats": {"field": "price"} } } } } }

In this example we are sorting on the variance of each bucket, so that colors with the least variance in price will appear before those that have more variance.