一、概述

现有news表,数据存放在Elasticsearch中。需要根据关键字查询之后,sum计算点击数。

数据如下:

{"content":"变异毒株在国内首次出现社区传播","hits":468}
{"content":"昆明市委书记:做好象群进主城准备","hits":489}
{"content":"吸入式新冠疫苗正在申请紧急使用","hits":476}

注意:hits表示点击数。

二、效果演示

环境说明

操作系统:centos 7.6

ip地址:192.168.7.160

Elasticsearch版本:7.10.1

初始化数据

1. 创建索引news

进入linux系统,手动执行

curl -XPUT http://localhost:9200/news

2. 创建一个映射

curl -XPOST http://localhost:9200/news/_mapping -H 'Content-Type:application/json' -d'
{"properties": {"content": {"type": "text"},"hits": {"type": "long"}}}'

3. 索引加入一些文档

curl -XPOST http://localhost:9200/news/_create/1 -H 'Content-Type:application/json' -d'
{"content":"变异毒株在国内首次出现社区传播","hits":468}
'curl -XPOST http://localhost:9200/news/_create/2 -H 'Content-Type:application/json' -d'
{"content":"昆明市委书记:做好象群进主城准备","hits":489}
'curl -XPOST http://localhost:9200/news/_create/3 -H 'Content-Type:application/json' -d'
{"content":"吸入式新冠疫苗正在申请紧急使用","hits":476}
'

4. 查询数据

使用postman工具发送GET请求,url地址:http://192.168.7.160:9200/news/_search

返回数据

{"took": 2,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 3,"relation": "eq"},"max_score": 1,"hits": [{"_index": "news","_type": "_doc","_id": "1","_score": 1,"_source": {"content": "变异毒株在国内首次出现社区传播","hits": 468}},{"_index": "news","_type": "_doc","_id": "2","_score": 1,"_source": {"content": "昆明市委书记:做好象群进主城准备","hits": 489}},{"_index": "news","_type": "_doc","_id": "3","_score": 1,"_source": {"content": "吸入式新冠疫苗正在申请紧急使用","hits": 476}}]}
}

View Code

可以看到数据有3条

sum查询

使用postman工具发送POST请求,url地址:http://192.168.7.160:9200/news/_search

body参数为:

{"query": {"match" : { "content" : "在" }},"aggs" : {"total_hits" : { "sum" : { "field" : "hits" } }}
}

参数说明:

查询content内容中,包含"在"的关键字,并sum计算点击数。

关于aggs下文会有详细说明。

aggs 聚合的模板

当query和aggs一起存在时,会先执行query的主查询,主查询query执行完后会搜出一批结果,而这些结果才会被拿去aggs拿去做聚合

另外要注意aggs后面会先接一层自定义的这个聚合的名字,然后才是接上要使用的聚合桶

如果有些情况不在意查询结果是什麽,而只在意aggs的结果,可以把size设为0,如此可以让返回的hits结果集是0,加快返回的速度

一个aggs裡可以有很多个聚合,每个聚合彼此间都是独立的,因此可以一个聚合拿来统计数量、一个聚合拿来分析数据、一个聚合拿来计算标准差...,让一次搜索就可以把想要做的事情一次做完

此例只定义了1个聚合total_hits,使用sum计算hits字段。

返回结果:

{"took": 3,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 2,"relation": "eq"},"max_score": 0.4700036,"hits": [{"_index": "news","_type": "_doc","_id": "1","_score": 0.4700036,"_source": {"content": "变异毒株在国内首次出现社区传播","hits": 468}},{"_index": "news","_type": "_doc","_id": "3","_score": 0.4700036,"_source": {"content": "吸入式新冠疫苗正在申请紧急使用","hits": 476}}]},"aggregations": {"total_hits": {"value": 944}}
}

注意:

aggregations 里面已经返回了sum结果,总的点击次数为944。可以计算一下468+476=944

本文参考链接:

https://blog.csdn.net/weixin_40341116/article/details/81173016

Elasticsearch根据查询条件求和sum相关推荐

  1. ES 根据查询条件求和sum

    最简单的查询求和,类似于SQL: select sum(XX) from table where ; 不需要group by. 也就不需要TermsAggregationBuilder dsl: GE ...

  2. Mysql - 带条件求和(sum)

    有的时候我们带条件求某些合计字段,接下来我们一起了解下写法吧 已有表:  例:需要求 age 大于等于 20 的共计 多少 ? 可能有的童鞋,给出以下答案 select sum(age) from t ...

  3. Mysql按条件求和Sum函数

    首先在写这博客的初衷是因为在工作开发过程中遇到了数据汇总问题,并且有的还是按条件汇总,这就有点小麻烦,然而学会使用sum函数之后,这些问题就迎刃而解了.是不是很Nice.好记性不如烂笔头!再此,希望能 ...

  4. 多条件求和--sum 和 sumifs 结合

    =sum(求和区域) =sumifs(求和区域,条件区域1,条件1,条件区域2,条件2......) 但同一个区域存在多个条件时

  5. Mysql 计算时间差、按条件求和、计算百分比

    1. 计算两个时间差 TIMESTAMPDIFF(时间单位,参数1,参数2) 参数1是小日期,参数2是大日期,时间单位为时间差的单位: select TIMESTAMPDIFF(YEAR, '2017 ...

  6. sql sum条件求和_SQL进阶7外连接(outer join)

    本文中介绍的SQL中行列转换和嵌套式侧栏的生成,将SQL语句查询的结果转换成我们想要的结果. 行转列,制作交叉表头 列转行 实现行列转换(行->列):制作交叉表 需求 根据下面的表Courses ...

  7. mysql的条件求和函数_使用SQL语句统计数据时sum和count函数中使用if判断条件的讲解...

    首先举个栗子(不想看的话直接下面看总结): order_type:订单类型 open_id:用户唯一标识 SELECT date(create_time) AS '当天日期', sum(real_pr ...

  8. mysql的条件求和函数_mysql 带条件取count记录数,SUM()函数按条件求和

    在做统计报表的时候,通常会用到一些复杂的统计功能,而不是简单的 count(*), sum(abc) 就可以的,这就用到了一些基于条件的统计功能. 带条件取count记录数 参考方法: 统计sub_t ...

  9. Oracle→分组函数、GROUP BY、HAVING、多表查询、连接、外连接、自连接、子查询单行多行、ROWNUM、ANY、ALL、NOT IN(...IS NOT NULL)、条件求和、DUAL

    分组函数 GROUP BY HAVING GROUP BY ROLLUP() 多表查询 等值连接 不等值连接 外连接 自连接 层次查询 子查询 子查询伪劣ROWNUM ROWID NOT IN(-IS ...

最新文章

  1. JDBC学习DayTwo
  2. ICCV 2021 | ARCH++: 可直接用于动画的穿衣服人体重建
  3. 数据结构7.5_有向无环图及其应用
  4. java 面试题之银行业务系统
  5. oracle易忘函数用法(1)
  6. html部分位置属性
  7. app开发人脸登录和指纹登录_易讯云通讯推出“一键登录”,为App登录提供新方案...
  8. 阿里二面:RocketMQ同一个消费组内的消费者订阅量不同tag,会有问题吗?
  9. DB服务器中的参数优化
  10. 实现CentOS 中的单窗口打开文件夹
  11. 一个性能较好的JVM参数配置(转)
  12. android广告平台哪个好用,最新!59个信息流广告平台数据榜单!
  13. Redis 如何使用 Bitmap
  14. 51单片机驱动LCD1602液晶
  15. Android仿IOS屏幕亮度调节-自定义view系列(5)
  16. 如何用计算机名查看共享打印机,如何查找网络共享打印机
  17. C#面向对象基础之String类的练习
  18. Android广告图片轮播控件
  19. 极速FLV合并器——合并FLV文件的好软件
  20. 直播预告 | 双十一电商风控怎么破,看这场直播就对了!

热门文章

  1. 损失函数(Loss Function)在实际应用中如何合理设计
  2. 数字字符串转化为数字
  3. 女朋友学高数,我花了15分钟用栈给她写了一个计算器
  4. 微信小程序——点击事件 bindtap和catchtap的区别
  5. 移动互联网的新宠:Android之缤纷世界
  6. 真实线上OOM溢出借助MAT工具排查(原创)
  7. 时间戳格式转换Date类型
  8. antd权限管理_ANTDPRO权限如何设置?
  9. R、Rstudio详细安装教程(详细图文)
  10. 2020PHP面试题总结笔记