返回结果如下,已经按照key的大小从大到小排序:

“aggregations” : {

“price” : {

“buckets” : [

{

“key” : 80000.0,

“doc_count” : 1

},

{

“key” : 60000.0,

“doc_count” : 0

},

{

“key” : 40000.0,

“doc_count” : 0

},

{

“key” : 20000.0,

“doc_count” : 4

},

{

“key” : 0.0,

“doc_count” : 3

}

]

}

}

}

《Elasticsearch 权威指南》里指出:_key只在 histogram 和 date_histogram 内使用,原文如下图红框所示:

在这里插入图片描述

但是在实际操作中发现,6.7.1版本中,除了histogram 和 date_histogram,terms桶也可以用_key排序,如下图,是按照key的字母降序:

在这里插入图片描述

把desc改为asc之后返回如下图,变成了按照key的首字母升序排序:

在这里插入图片描述

3. 另外《Elasticsearch 权威指南》中还提到一种内置排序类型_term,但是《Elasticsearch官方文档》中宣布该类型在6.0之后已经废弃,如下:

在这里插入图片描述

也许是"手贱"的缘故,我还是用_term试了下,可以返回结果,但是会建议用_key替代_term,如下图:

在这里插入图片描述

按照metrics排序(metrics结果只有一个值)

常见的metrics有累加和(sum)、最大值(max)、最小值(min)、平均值(avg),这些metrics的特点是处理结果只有一个值,我们可以按照这个结果来排序,例如计算每个汽车品牌的销售额,再按照销售额排序:

GET /cars/transactions/_search

{

“size”: 0,

“aggs”: {

“sales_rank”: {

“terms”: { —桶类型是terms

“field”: “make”, —按照make字段聚合

“order”: { —要求排序

“sales”: “desc” —排序字段是sales

}

},

“aggs”: {

“sales”: { —metrics处理后的结果保存在名为sales的字段中,排序已经指定了该字段

“sum”: { —桶内的metrics处理,类型是累加

“field”: “price” —将price字段的值累加

}

}

}

}

}

}

下面是聚合结果,可见已按照每个品牌的销售额大小做了降序的排序:

“aggregations” : { —聚合结果

“sales_rank” : { —桶名称

“doc_count_error_upper_bound” : 0,

“sum_other_doc_count” : 0,

“buckets” : [ —这个JSON数组内是按照品牌聚合而成的所有桶

{

“key” : “bmw”, —品牌为bmw的桶

“doc_count” : 1, —文档数量为1

“sales” : { —metrics处理结果

“value” : 80000.0 —品牌为bmw的汽车销售总额是80000

}

},

{

“key” : “ford”,

“doc_count” : 2,

“sales” : {

“value” : 55000.0

}

},

{

“key” : “honda”,

“doc_count” : 3,

“sales” : {

“value” : 50000.0

}

},

{

“key” : “toyota”,

“doc_count” : 2,

“sales” : {

“value” : 27000.0

}

}

]

}

}

}

按照metrics排序(metrics结果有多个值)

和sum、max这些只有一个结果的metrics不同,extended_stats的结果包含了数量、最大值、最小值、平均值、累加和等多种处理,此时必须要指定用其中的哪一项(否则会返回错误:Invalid aggregation order path [xxxx]. When ordering on a multi-value metrics aggregation a metric name must be specified):

GET /cars/transactions/_search

{

“size”: 0,

“aggs”: {

“sales_rank”: {

“terms”: { —桶类型是terms

“field”: “make”, —按照make字段聚合

“order”: { —要求排序

“stat.avg”: “asc” —排序字段是metrics结果的一个子项(平均值),升序

}

},

“aggs”: {

“stat”: { —metrics处理后的结果保存在名为stat的字段中,排序已经指定了该字段的agv子项(平均值)

“extended_stats”: { —桶内的metrics处理,类型是计算数量、最大值、最小值、平均值等多个指标项

“field”: “price” —将price字段的值拿来做metrics处理

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

711737274614)]

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

[外链图片转存中…(img-vtu7RjAU-1711737274614)]

[外链图片转存中…(img-ws81Z57O-1711737274615)]

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐