Elasticsearch 聚合查询(aggs),java后端面试常见问题

这篇具有很好参考价值的文章主要介绍了Elasticsearch 聚合查询(aggs),java后端面试常见问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分组完成以后,我们一般会对组中的数据进行聚合运算,例如求平均值、最大、最小、求和等,这些在ES中称为度量

比较常用的一些度量聚合方式:

  • Avg Aggregation:求平均值

  • Max Aggregation:求最大值

  • Min Aggregation:求最小值

  • Percentiles Aggregation:求百分比

  • Stats Aggregation:同时返回avg、max、min、sum、count等

  • Sum Aggregation:求和

  • Top hits Aggregation:求前几

  • Value Count Aggregation:求总数

  • ……

测试聚合


创建索引:

PUT /cars

{

“settings”: {

“number_of_shards”: 1,

“number_of_replicas”: 0

},

“mappings”: {

“transactions”: {

“properties”: {

“color”: {

“type”: “keyword”

},

“make”: {

“type”: “keyword”

}

}

}

}

}

注意:在ES中,需要进行聚合、排序、过滤的字段其处理方式比较特殊,因此不能被分词。这里我们将color和make这两个文字类型的字段设置为keyword类型,这个类型不会被分词,将来就可以参与聚合

导入数据:

POST /cars/transactions/_bulk

{ “index”: {}}

{ “price” : 10000, “color” : “red”, “make” : “honda”, “sold” : “2014-10-28” }

{ “index”: {}}

{ “price” : 20000, “color” : “red”, “make” : “honda”, “sold” : “2014-11-05” }

{ “index”: {}}

{ “price” : 30000, “color” : “green”, “make” : “ford”, “sold” : “2014-05-18” }

{ “index”: {}}

{ “price” : 15000, “color” : “blue”, “make” : “toyota”, “sold” : “2014-07-02” }

{ “index”: {}}

{ “price” : 12000, “color” : “green”, “make” : “toyota”, “sold” : “2014-08-19” }

{ “index”: {}}

{ “price” : 20000, “color” : “red”, “make” : “honda”, “sold” : “2014-11-05” }

{ “index”: {}}

{ “price” : 80000, “color” : “red”, “make” : “bmw”, “sold” : “2014-01-01” }

{ “index”: {}}

{ “price” : 25000, “color” : “blue”, “make” : “ford”, “sold” : “2014-02-12” }

聚合为桶


首先,我们按照 汽车的颜色color来划分

GET /cars/_search

{

“size” : 0,

“aggs” : {

“popular_colors” : {

“terms” : {

“field” : “color”

}

}

}

}

  • size: 查询条数,这里设置为0,因为我们不关心搜索到的数据,只关心聚合结果,提高效率

  • aggs:声明这是一个聚合查询,是aggregations的缩写

  • popular_colors:给这次聚合起一个名字,任意。

  • terms:划分桶的方式,这里是根据词条划分

  • field:划分桶的字段

结果:

es agg求和,Java程序员面试,elasticsearch,java,面试

桶内度量


前面的例子告诉我们每个桶里面的文档数量,但是我们需要更复杂的文档度量,我们需要告诉Elasticsearch使用哪个字段使用何种度量方式进行运算,这些信息要嵌套在内,度量的运算会基于内的文档进行

现在,为刚刚的聚合结果添加 求价格平均值的度量

GET /cars/_search

{

“size” : 0,

“aggs” : {

“popular_colors” : {

“terms” : {

“field” : “color”

},

“aggs”:{

“avg_price”: {

“avg”: {

“field”: “price”

}

}

}

}

}

}

  • aggs:我们在上一个aggs(popular_colors)中添加新的aggs。可见度量也是一个聚合

  • avg_price:聚合的名称

  • avg:度量的类型,这里是求平均值

  • field:度量运算的字段

结果:

es agg求和,Java程序员面试,elasticsearch,java,面试

桶内嵌套桶


刚刚的案例中,我们在桶内嵌套度量运算。事实上桶不仅可以嵌套运算, 还可以再嵌套其它桶。也就是说在每个分组中,再分更多组。

比如:我们想统计每种颜色的汽车中,分别属于哪个制造商,按照make字段再进行分桶

GET /cars/_search

{

“size” : 0,

“aggs” : {

“popular_colors” : {

“terms” : {

“field” : “color”

},

“aggs”:{

“avg_price”: {

“avg”: {

“field”: “price”

}

},

“maker”:{

“terms”:{

“field”:“make”

}

}

}

}

}

}

  • maker:在嵌套的aggs下新添一个桶,叫做maker

  • terms:桶的划分类型依然是词条

  • filed:这里根据make字段进行划分

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

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
es agg求和,Java程序员面试,elasticsearch,java,面试
es agg求和,Java程序员面试,elasticsearch,java,面试
es agg求和,Java程序员面试,elasticsearch,java,面试

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

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
es agg求和,Java程序员面试,elasticsearch,java,面试

最后

分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。

面试经验技巧篇
  • 经验技巧1 如何巧妙地回答面试官的问题
  • 经验技巧2 如何回答技术性的问题
  • 经验技巧3 如何回答非技术性问题
  • 经验技巧4 如何回答快速估算类问题
  • 经验技巧5 如何回答算法设计问题
  • 经验技巧6 如何回答系统设计题
  • 经验技巧7 如何解决求职中的时间冲突问题
  • 经验技巧8 如果面试问题曾经遇见过,是否要告知面试官
  • 经验技巧9 在被企业拒绝后是否可以再申请
  • 经验技巧10 如何应对自己不会回答的问题
  • 经验技巧11 如何应对面试官的“激将法”语言
  • 经验技巧12 如何处理与面试官持不同观点这个问题
  • 经验技巧13 什么是职场暗语

es agg求和,Java程序员面试,elasticsearch,java,面试

面试真题篇
  • 真题详解1 某知名互联网下载服务提供商软件工程师笔试题
  • 真题详解2 某知名社交平台软件工程师笔试题
  • 真题详解3 某知名安全软件服务提供商软件工程师笔试题
  • 真题详解4 某知名互联网金融企业软件工程师笔试题
  • 真题详解5 某知名搜索引擎提供商软件工程师笔试题
  • 真题详解6 某初创公司软件工程师笔试题
  • 真题详解7 某知名游戏软件开发公司软件工程师笔试题
  • 真题详解8 某知名电子商务公司软件工程师笔试题
  • 真题详解9 某顶级生活消费类网站软件工程师笔试题
  • 真题详解10 某知名门户网站软件工程师笔试题
  • 真题详解11 某知名互联网金融企业软件工程师笔试题
  • 真题详解12 国内某知名网络设备提供商软件工程师笔试题
  • 真题详解13 国内某顶级手机制造商软件工程师笔试题
  • 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
  • 真题详解15 某著名社交类上市公司软件工程师笔试题
  • 真题详解16 某知名互联网公司软件工程师笔试题
  • 真题详解17 某知名网络安全公司校园招聘技术类笔试题
  • 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题

es agg求和,Java程序员面试,elasticsearch,java,面试

资料整理不易,点个关注再走吧

开发公司软件工程师笔试题

  • 真题详解8 某知名电子商务公司软件工程师笔试题
  • 真题详解9 某顶级生活消费类网站软件工程师笔试题
  • 真题详解10 某知名门户网站软件工程师笔试题
  • 真题详解11 某知名互联网金融企业软件工程师笔试题
  • 真题详解12 国内某知名网络设备提供商软件工程师笔试题
  • 真题详解13 国内某顶级手机制造商软件工程师笔试题
  • 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
  • 真题详解15 某著名社交类上市公司软件工程师笔试题
  • 真题详解16 某知名互联网公司软件工程师笔试题
  • 真题详解17 某知名网络安全公司校园招聘技术类笔试题
  • 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题

[外链图片转存中…(img-93KfcP4q-1710398049765)]

资料整理不易,点个关注再走吧

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录文章来源地址https://www.toymoban.com/news/detail-861414.html

到了这里,关于Elasticsearch 聚合查询(aggs),java后端面试常见问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【PgSQL】聚合函数string_agg

    在工作中,遇到了这样的需求,需要根据某一个字段A分组查询,统计数量,同时还要查询另一个字段B,但是呢这个字段B在分组后的记录中存在不同的值。最开始不知道有聚合函数可以实现这一功能,在代码中进行了处理。后来,经老同事的提醒,得知了string_agg这个函数,便

    2024年01月24日
    浏览(35)
  • Elasticsearch查询以及聚合查询

    must:返回的文档必须满足子句的条件,并且参与计算分值 filter:返回的文档必须满足filter子句的条件,不会参与计算分值 should:返回的文档可能满足should子句的条件。 must_nout:返回的文档必须不满足must_not定义的条件。 注意:如果一个查询既有filter又有should,那么至少包含

    2023年04月13日
    浏览(53)
  • ES通过抽样agg聚合性能提升3-5倍

            一直以来,es的agg聚合分析性能都比较差(对应sql的 group by)。特别是在超多数据中做聚合,在搜索的条件命中特别多结果的情况下,聚合分析会非常非常的慢。         一个聚合条件:聚合分析请求的时间 = search time + agg time         N个聚合条件:聚合分析请求

    2024年02月04日
    浏览(38)
  • PostgreSQL:string_agg 多列值聚合成一列

    string_agg 是PostgreSQL中的一个聚合函数,用于将一组值连接为一个字符串。它接受两个参数:要连接的值和连接符。 语法如下: 其中, expression 是要连接的值的表达式,可以是列名、常量或表达式; delimiter 是用于分隔连接的字符串。 string_agg 通常结合 GROUP BY 子句一起使用,

    2024年02月14日
    浏览(38)
  • elasticsearch的聚合查询

    聚合基本格式 其中NAME表示当前聚合的名字,可以取任意合法的字符串,AGG_TYPE表示聚合的类型,常见的为分为多值聚合和单值聚合 例子 上面的例子表示查询当前库里面的likeCount的和,返回结果: 返回结果中默认会包含命中的document,所以需要把size指定为0,结果中的sum_all为

    2024年02月08日
    浏览(45)
  • Elasticsearch学习-- 聚合查询

     1. 分桶聚合  bucket aggregations 按照每个标签进行分类 ,类似于group by        2. 指标聚合 metrics aggregations   3. 管道聚合 pipeline aggregations 先计算平均值,再计算最小值    默认查询返回结果是10条,可以通过设置size来看返回值数量 1. 统计不同标签的商品数量   2. 为什么上面使

    2023年04月09日
    浏览(39)
  • elasticsearch聚合查询实践

    概念 聚合分类 聚合语法 聚合作用范围及排序 聚合原理及 terms 精准度 聚合实验 桶聚合 指标聚合 Pipeline 聚合 实践一:多商户数据权限聚合分页 实践二:多维度嵌套聚合 实践三:删除 ES 索引重复数据 附:实验环境 用于聚合的字段必须是 exact value ,即 doc_value=true 。分词字

    2024年02月03日
    浏览(46)
  • 重学Elasticsearch第5章 : 过滤查询、聚合查询

    其实准确来说,ES中的查询操作分为2种: 查询(query) 和 过滤(filter) 。 查询即是之前提到的query查询,它(查询)默认会计算每个返回文档的得分,然后根据得分排序 。 过滤(filter)只会筛选出符合的文档,并不计算得分,且它可以缓存文档 。所以,单从性能考虑,过滤比查询更快

    2024年02月09日
    浏览(36)
  • elasticsearch中的聚合分组查询

    分组聚合及嵌套查询 聚合查询可以理解为SQL中的求和、求最大值、最小值以及求均值的需求 嵌套可以理解为es存值的某一个字段为对象属性的值做处理. Elasticsearch Java API分组与聚合结合 其中对字段field_one进行分组,分组的别名为fieldOne,取2^31-1组数据.如果不设置size,查询的结果

    2024年02月11日
    浏览(47)
  • Elasticsearch 基本使用(四)聚合查询

    说到聚合查询,马上会想到 SQL 中的 group by,ES中也有类似的功能,名叫 Aggregation。 统计分组后的数量 按年龄分组,然后统计每个年龄人数 count(*) ,age xxx group by age 非文档字段分组 文档字段分组 直接使用文档字段分组会报错。 ES没有对文本字段聚合,排序等操作优化;如果对

    2024年02月12日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包