Elasticsearch聚合学习之四:结果排序,阿里云java面试

这篇具有很好参考价值的文章主要介绍了Elasticsearch聚合学习之四:结果排序,阿里云java面试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

返回结果如下,已经按照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 内使用,原文如下图红框所示:

Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云

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

Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云

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

Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云

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

Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云

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

Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云

按照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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云
Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云
Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云
Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云
Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云
Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云

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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云

最后

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

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

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

Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云

Elasticsearch聚合学习之四:结果排序,阿里云java面试,2024年程序员学习,elasticsearch,学习,阿里云

711737274614)]

最后

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

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

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

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

[外链图片转存中…(img-ws81Z57O-1711737274615)]文章来源地址https://www.toymoban.com/news/detail-845111.html

到了这里,关于Elasticsearch聚合学习之四:结果排序,阿里云java面试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch - 聚合获取原始数据并分页&排序&模糊查询

    ES版本: 7.6. 需要按照主机ID 进行告警时间的汇总,并且还得把主机相关的信息展示出来。 注: 所有的数据都存在索引中, 通过一个DSL查询展示 实际上就是将terms聚合的结果以列表形式分页展示。 bucket_sort中 from不是pageNum,如想实现pageNum效果,from=pageNum*size即可; terms聚合

    2024年02月05日
    浏览(44)
  • 解决Elasticsearch的Text类型的字段参与聚合和排序

    text字段类型用于全文内容,例如电子邮件正文或产品说明,并且es会通过分析器对字符串进行分词,可以在全文检索中搜索单独的单词。文本字段最适合非结构化但可读的内容并且不用于排序,也很少用于聚合 keyword主要用于结构化内容的字段,并且总是会有相同值的字段。

    2024年02月11日
    浏览(46)
  • ElasticSearch系列 - SpringBoot整合ES:实现搜索结果排序 sort

    00. 数据准备 01. Elasticsearch 默认的排序方式是什么? ElasticSearch 默认的排序方式是相关性排序。相关性排序是根据查询条件与文档的匹配程度来计算每个文档的相关性得分,然后按照得分从高到低进行排序。相关性排序是 ElasticSearch 中最常用的排序方式,因为它可以根据查询

    2024年02月02日
    浏览(51)
  • elasticsearch[四]-数据聚合排序查询、搜索框自动补全、数据同步、集群

    **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的 sql 要方便的多,而且查询速度非常快,可以实现近

    2024年01月19日
    浏览(57)
  • Elasticsearch 核心技术(九):搜索结果处理(分页、排序、指定返回字段、去重、高亮显示)

    ❤️ 博客主页:水滴技术 🚀 支持水滴: 点赞 👍 + 收藏 ⭐ + 留言 💬 🌸 订阅专栏:大数据核心技术从入门到精通

    2023年04月13日
    浏览(81)
  • 微服务分布式搜索引擎 ElasticSearch 搜索结果处理 排序、分页与高亮

    本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 搜索结果处理 搜索的结果可以按照用户指定的方式去处理或展示。 elasticsearch默认是根据相关度算分(_score)来排序,但是也支

    2024年02月02日
    浏览(57)
  • 原生语言操作和spring data中RestHighLevelClient操作Elasticsearch,索引,文档的基本操作,es的高级查询.查询结果处理. 数据聚合.相关性系数打分

    ​ Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasti

    2024年02月05日
    浏览(80)
  • ElasticSearch java API - 聚合查询

    }, “low”: { “type”: “long” }, “date”: { “format”: “strict_date_optional_time||epoch_millis”, “type”: “date” }, “close”: { “type”: “long” } }, “_all”: { “enabled”: false } } } 索引中的全部数据: name age salary team position james 33 3000 cav sf irving 25 2000 cav pg curry 29 1000 war pg thompson 26

    2024年04月10日
    浏览(35)
  • Java Elasticsearch多条件分组聚合查询

    需求         在项目开发中,需要从elasticsearch中查询日志数据,先统计每一天的日志调用量,然后在每一天的分组聚合基础上,再分组聚合统计成功和失败的日志调用量。 代码

    2024年02月08日
    浏览(54)
  • 【ElasticSearch】数据聚合语法与Java实现

    聚合(aggregations)可以实现 对文档数据的统计、分析、运算 。(类比MySQL的聚合函数)ES聚合常见的有三类: 桶(Bucket)聚合:用来对文档做分组 度量(Metric)聚合:用以计算一些值,比如:最大值、最小值、平均值等 管道(pipeline)聚合:基于其它聚合的结果为基础做聚

    2024年02月14日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包