原文地址: https://www.elastic.co/guide/cn/elasticsearch/guide/current/_sorting_by_a_metric.html, 版权归 www.elastic.co 所有
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/_sorting_by_a_metric.html
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/_sorting_by_a_metric.html
请注意:
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
按度量排序 (Sorting by a Metric)edit
有时,我们会想基于度量(mertic)计算的结果进行排序。 在我们的汽车销售分析仪表盘中,我们可能想按照汽车颜色创建一个销售条形图,但按照汽车平均售价的升序进行排序。
我们可以增加一个度量,再指定 order
参数引用这个度量即可:
GET /cars/transactions/_search { "size" : 0, "aggs" : { "colors" : { "terms" : { "field" : "color", "order": { "avg_price" : "asc" } }, "aggs": { "avg_price": { "avg": {"field": "price"} } } } } }
我们可以采用这种方式用任何度量排序,只需简单的引用度量的名字。不过有些度量会输出多个值。 extended_stats
度量是一个很好的例子:它输出好几个度量值。
如果我们想使用 多值度量(multivalue metric) 进行排序, 我们只需以关心的度量为关键词使用点式路径:
GET /cars/transactions/_search { "size" : 0, "aggs" : { "colors" : { "terms" : { "field" : "color", "order": { "stats.variance" : "asc" } }, "aggs": { "stats": { "extended_stats": {"field": "price"} } } } } }
在上面这个例子中,我们按每个桶的方差(variance)来排序,所以那个售价的方差最小的颜色的桶 会排在其他的颜色前面。