ElasticSearch java API - 聚合查询

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

  1. },

  2. “low”: {

  3. “type”: “long”

  4. },

  5. “date”: {

  6. “format”: “strict_date_optional_time||epoch_millis”,

  7. “type”: “date”

  8. },

  9. “close”: {

  10. “type”: “long”

  11. }

  12. },

  13. “_all”: {

  14. “enabled”: false

  15. }

  16. }

  17. }

索引中的全部数据:

name age salary team position
james 33 3000 cav sf
irving 25 2000 cav pg
curry 29 1000 war pg
thompson 26 2000 war sg
green 26 2000 war pf
garnett 40 1000 tim pf
towns 21 500 tim c
lavin 21 300 tim sg
wigins 20 500 tim sf

首先,初始化Builder:

SearchRequestBuilder sbuilder = client.prepareSearch(“player”).setTypes(“player”);

接下来举例说明各种聚合操作的实现方法,因为在es的api中,多字段上的聚合操作需要用到子聚合(subAggregation),初学者可能找不到方法(网上资料比较少,笔者在这个问题上折腾了两天,最后度了源码才彻底搞清楚T_T),后边会特意说明多字段聚合的实现方法。另外,聚合后的排序也会单独说明。

1. group by/count


例如要计算每个球队的球员数,如果使用SQL语句,应表达如下:

select team, count(*) as player_count from player group by team;

ES的java api:

  1. TermsBuilder teamAgg= AggregationBuilders.terms( "player_count ").field( “team”);

  2. sbuilder.addAggregation(teamAgg);

  3. SearchResponse response = sbuilder.execute().actionGet();

2.group by多个field


例如要计算每个球队每个位置的球员数,如果使用SQL语句,应表达如下:

select team, position, count(*) as pos_count from player group by team, position;

ES的java api:

  1. TermsBuilder teamAgg= AggregationBuilders.terms( "player_count ").field( “team”);

  2. TermsBuilder posAgg= AggregationBuilders.terms( “pos_count”).field( “position”);

  3. sbuilder.addAggregation(teamAgg.subAggregation(posAgg));

  4. SearchResponse response = sbuilder.execute().actionGet();

3.max/min/sum/avg


例如要计算每个球队年龄最大/最小/总/平均的球员年龄,如果使用SQL语句,应表达如下:

select team, max(age) as max_age from player group by team;

ES的java api:

  1. TermsBuilder teamAgg= AggregationBuilders.terms( "player_count ").field( “team”);

  2. MaxBuilder ageAgg= AggregationBuilders.max( “max_age”).field( “age”);

  3. sbuilder.addAggregation(teamAgg.subAggregation(ageAgg));

  4. SearchResponse response = sbuilder.execute().actionGet();

4.对多个field求max/min/sum/avg


例如要计算每个球队球员的平均年龄,同时又要计算总年薪,如果使用SQL语句,应表达如下:

select team, avg(age)as avg_age, sum(salary) as total_salary from player group by team;

ES的java api:

  1. TermsBuilder teamAgg= AggregationBuilders.terms( “team”);

  2. AvgBuilder ageAgg= AggregationBuilders.avg( “avg_age”).field( “age”);

  3. SumBuilder salaryAgg= AggregationBuilders.avg( "total_salary ").field( “salary”);

  4. sbuilder.addAggregation(teamAgg.subAggregation(ageAgg).subAggregation(salaryAgg));

  5. SearchResponse response = sbuilder.execute().actionGet();

5.聚合后对Aggregation结果排序


例如要计算每个球队总年薪,并按照总年薪倒序排列,如果使用SQL语句,应表达如下:

select team, sum(salary) as total_salary from player group by team order by total_salary desc;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

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

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

ElasticSearch java API - 聚合查询,程序员,elasticsearch,java,python

ElasticSearch java API - 聚合查询,程序员,elasticsearch,java,python

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

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

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

ElasticSearch java API - 聚合查询,程序员,elasticsearch,java,python

最后

面试题文档来啦,内容很多,485页!

由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。

1111道Java工程师必问面试题

ElasticSearch java API - 聚合查询,程序员,elasticsearch,java,python

MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:

ElasticSearch java API - 聚合查询,程序员,elasticsearch,java,python

Elasticsearch 24 题 +Memcached + Redis 40题:

ElasticSearch java API - 聚合查询,程序员,elasticsearch,java,python

Spring 26 题+ 微服务 27题+ Linux 45题:

ElasticSearch java API - 聚合查询,程序员,elasticsearch,java,python

Java面试题合集:

ElasticSearch java API - 聚合查询,程序员,elasticsearch,java,python

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
Redis 40题:**

[外链图片转存中…(img-a5lFb7i8-1711972912774)]

Spring 26 题+ 微服务 27题+ Linux 45题:

[外链图片转存中…(img-3ykm3NWQ-1711972912774)]

Java面试题合集:

[外链图片转存中…(img-Yd5z7eKp-1711972912774)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!文章来源地址https://www.toymoban.com/news/detail-846908.html

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

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

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

相关文章

  • 程序员不得不知道的 API 接口常识

    1、初识 API 接口 记得在我初学 web 开发的时候,后端框架相关的教程基本都会教学生写渲染模版(不分语言),也就是说后端返回的是整个网页的数据,浏览器只负责渲染。 一般这类模版在后端都会对应一个路由,比如前端想登入一个看用户信息的页面,在 url 中输入的访问

    2024年02月01日
    浏览(37)
  • 程序员如何利用公网远程访问查询本地硬盘【内网穿透】

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 : 《高效编程技巧》《cpolar》 ⛺️生活的理想,就是为了理想的生活! 随着云概念的流行,不少企业采用云存储技术来保存办公文件,同时,很多个人用户也感受到云存储带来的便利,让云存储概念一时间风头无两。由于资料数据的敏感

    2024年02月12日
    浏览(29)
  • 黑马程序员--分布式搜索ElasticSearch学习笔记

    黑马视频地址:https://www.bilibili.com/video/BV1LQ4y127n4/ 想获得最佳的阅读体验,请移步至我的个人博客 SpringCloud学习笔记 消息队列MQ学习笔记 Docker学习笔记 分布式搜索ElasticSearch学习笔记 ElasticSearch的作用 ElasticSearch 是一款非常强大的开源搜素引擎,具备非常强大的功能,可以帮

    2024年02月04日
    浏览(32)
  • 10、全文检索 -- Elasticsearch -- 介绍、下载,42岁程序员面试

    目录 全文检索 – Elasticsearch – 介绍、下载、安装、配置、开启安全机制、设置用户密码、为 Elasticsearch 启用 SSL 和 HTTPS 支持 Elasticsearch 介绍 官网下载 Elasticsearch 安装 Elasticsearch 1、bin 目录介绍 2、配置环境变量 3、修改配置文件 4、启动 Elasticsearch 5、查看 Elasticsearch 启动结果

    2024年04月26日
    浏览(32)
  • GPT引领学习之旅:弥补信息差,助力程序员高效掌握Elasticsearch

    Elasticsearch作为一款流行的开源搜索和分析引擎,持续迅速发展,随着版本的更新,功能和特性也在不断变化。GPT虽然具备大量的计算机科学、编程语言和工具相关的知识,但其知识截止于2021年。为了弥补GPT与实际情况之间的信息差,我们可以采取以下策略,将GPT与实际情况

    2024年02月02日
    浏览(98)
  • GPT引领学习之旅:适应不同级别程序员的Elasticsearch学习案例

    在本文中,我们将为初级、中级和高级程序员分别提供一个Elasticsearch学习案例,展示如何利用GPT进行针对性学习。 假设您是一名初级程序员,想要在自己的个人博客中集成Elasticsearch搜索引擎,以下是学习和实践的过程: 学习目标:了解Elasticsearch基本概念、安装配置、数据

    2023年04月24日
    浏览(44)
  • 黑豹程序员-架构师学习路线图-百科:API接口测试工具Postman

    目前我们开发项目大都是前后端分离项目,前端采用h5+css+js+vue基于nodejs,后端采用java、SpringBoot、SSM,大型项目采用SpringCloud微服务。 后端为和前端对接,形成很多API接口,也就是URL链接和其参数。 这时后端写完后我们前端还有大量代码需要写,所以写前端之前最好保证后端

    2024年01月19日
    浏览(41)
  • GPT引领学习之旅:一篇让程序员轻松掌握Elasticsearch的攻略

    随着大数据技术的飞速发展,程序员们面临着越来越多的挑战。Elasticsearch作为一款流行的开源搜索和分析引擎,已成为许多项目的重要组成部分。那么如何高效地学习并掌握Elasticsearch呢?在这篇文章中,我们将探讨如何运用GPT(Generative Pre-trained Transformer)技术,帮助程序员

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

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

    2024年02月08日
    浏览(43)
  • Elasticsearch的高阶使用方法有哪些?,后端程序员必备的Linux基础知识+常见命令

    ③should 通用的道理:多个查询条件通过should连接,相当于以前常用的or,说白了也就是逻辑运算符“与”。 ps :关于其格式使用,不要看它图中好像挺复杂的样子,其实都可以通过工具有提示,并且这些写多了基本也就知道了。 2范围查询 商品都有自己的价格,用户可以通过

    2024年04月08日
    浏览(67)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包