es ElasticSearch中"distinct","count"和"group by"的实现_roshy的博客-CSDN博客_es distinct


本站和网页 https://blog.csdn.net/roshy/article/details/100085510 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

es ElasticSearch中"distinct","count"和"group by"的实现_roshy的博客-CSDN博客_es distinct
es ElasticSearch中"distinct","count"和"group by"的实现
roshy
于 2019-08-26 20:42:39 发布
9987
收藏
15
原文链接:https://www.jianshu.com/p/62bed9cc8349
版权
最近在业务中需要使用ES来进行数据查询,在某些场景下需要对数据进行去重,以及去重后的统计。为了方便大家理解,特意从SQL角度,方便大家能够理解ES查询语句。
1 - distinct
SELECT DISTINCT(user_id) FROM table WHERE user_id_type = 3;
"query": {
"term": {
"user_id_type": 3
},
"collapse": {
"field": "user_id"
...
"hits": {
"hits": [
"_index": "es_qd_mkt_visitor_packet_dev_v1_20180621",
"_type": "ad_crowd",
"_source": {
"user_id": "wx2af8414b502d4ca2_oHtrD0Vxv-_8c678figJNHmtaVQQ",
"user_id_type": 3
},
"fields": {
"user_id": [
"wx2af8414b502d4ca2_oHtrD0Vxv-_8c678figJNHmtaVQQ"
总结:使用collapse字段后,查询结果中[hits]中会出现[fields]字段,其中包含了去重后的user_id
2 - count + distinct
SELECT COUNT(DISTINCT(user_id)) FROM table WHERE user_id_type = 3;
"query": {
"term": {
"user_id_type": 3
},
"aggs": {
"count": {
"cardinality": {
"field": "user_id"
...
"hits": {
...
},
"aggregations": {
"count": {
"value": 121
总结:aggs中cardinality的字段代表需要distinct的字段
3 - count + group by
SELECT COUNT(user_id) FROM table GROUP BY user_id_type;
"aggs": {
"user_type": {
"terms": {
"field": "user_id_type"
...
"hits": {
...
},
"aggregations": {
"user_type": {
...
"buckets": [
"key": 4,
"doc_count": 1220
},
"key": 3,
"doc_count": 488
总结:aggs中terms的字段代表需要gruop by的字段
4 - count + distinct + group by
SELECT COUNT(DISTINCT(user_id)) FROM table GROUP BY user_id_type;
"aggs": {
"user_type": {
"terms": {
"field": "user_id_type"
},
"aggs": {
"count": {
"cardinality": {
"field": "user_id"
...
"hits": {
...
},
"aggregations": {
"user_type": {
...
"buckets": [
"key": 4,
"doc_count": 1220, //去重前数据1220条
"count": {
"value": 276 //去重后数据276条
},
"key": 3,
"doc_count": 488, //去重前数据488条
"count": {
"value": 121 //去重后数据121条
5 - count + distinct + group by + where
SELECT COUNT(DISTINCT(user_id)) FROM table WHERE user_id_type = 2 GROUP BY user_id;
总结:对于既有group by又有distinct的查询要求,需要在aggs中嵌套子aggs
6 - 注意事项
collapse关键字
折叠功能ES5.3版本之后才发布的。聚合&折叠只能针对keyword类型有效;
作者:彬彬酱 链接:https://www.jianshu.com/p/62bed9cc8349 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
roshy
关注
关注
点赞
15
收藏
评论
es ElasticSearch中"distinct","count"和"group by"的实现
最近在业务中需要使用ES来进行数据查询,在某些场景下需要对数据进行去重,以及去重后的统计。为了方便大家理解,特意从SQL角度,方便大家能够理解ES查询语句。1 - distinctSELECT DISTINCT(user_id) FROM table WHERE user_id_type = 3;{ "query": { "term": { "user...
复制链接
扫一扫
ES聚合分组后count排序
liaofucheng123的博客
06-09
8881
ES通过多个字段分组后count排序.
数据库SQL:select count(1) from table group by storeCode,productId order by count(1) desc;
"query": {
"bool": {
"must": [
"exists": {
"field": "storeCod
es 聚合分页(group by后分页)
黑喵警长的博客
12-04
8280
es 实现sql的 group by后如何分页?
先放json解释,再放纯净版方便copy
"query": {
...... //搜索条件
},
"aggs": {
"count": { // COUNT(*),统计GROUP BY后的总数
"cardinality": {
"field": "goods_id" // 因为我这里GROUP BY的字段是goods_id,所以就用g
评论 1
您还未登录,请先
登录
后发表或查看评论
es的简单查询和聚合查询用法说明
01-20
es的简单查询和聚合查询用法说明,用于理解es的聚合查询和简单查询的思路过程,便于快速的应用es,
希望能有所帮助,谢谢
ES去重查询实现
最新发布
qq_31286957的博客
10-30
559
【代码】kibana上去重查询实现。
Es按照时间段统计总数
mxasd的博客
01-11
5283
在Es中使用 统计,折线图
“field”:是你要通过什么字段分割 指定你的日期的字段,
“fixed_interval”: 是按多久分割, 这是基于Es7.0之后的
然后下面的filed 的意思也是指定字段,
而size = 10000的原因是因为 不写size 的话 Es 只会给你返回10条 不会给你全部返回,而我当时项目需要我使用当前时间的全部数据,所以我给的size为10000
GET osintb/_search?size=0
"query": {
"bool": {
Elasticsearch的distinct项查询(去重查询)
goodluck_mh的博客
06-16
1万+
网上找了去重的方案,自己研究了一下:
GET cars/transactions/_search
"size" : 0, // 表示搜索出来的文档数为0个,也表示不关心文档内容只要聚合结果。 如果为 1 ,就会搜索出1个文档。
"aggs" : { //聚合操作在顶层参数'aggs'之下,完整形式'aggregations' 同样有效。
"my_
ES多个字段group by操作
cainiao1412的博客
10-20
1万+
第一种方式
这种方式查询出来的数据不是扁平化的,而是一层套一层的,比如字段一套字段二。
GET 索引name/索引type/_search
"size": 0,
"aggregations": {
"字段一的结果命名": {
"terms": {
"field": "要group的字段"
},
"aggregations": {
"字段二的结果命名": {
"terms": {
"field": "要group的字段"
ElasticSearch中"distinct","count"和"group by"的实现
weixin_30602505的博客
02-21
3532
最近在业务中需要使用ES来进行数据查询,在某些场景下需要对数据进行去重,以及去重后的统计。为了方便大家理解,特意从SQL角度,方便大家能够理解ES查询语句。
1 - distinct
SELECT DISTINCT(user_id) FROM table WHERE user_id_type = 3;
"query": {
"term": ...
oracle distinct 去重多个字段_大数据Spark面试,distinct去重原理,是如何实现的
weixin_39559895的博客
12-04
279
最近,有位朋友问我,distinct去重原理是怎么实现的?“在面试时,面试官问他了解distinct算子吗?”“了解啊,Spark的rdd,一种transFormation去重的算子,主要用来去重的”。“哟,看来你经常使用distinct算子,对distinct算子很熟悉啊”。“好说,好说”。“那你能说说distinct是如何实现去重的吗?”我朋友支支吾吾半天:“就是这样、那样去重的啊”。“这样、...
ES查询distinct、in、between
weixin_44207827的博客
01-07
2124
mysql的 count ( distinct (uuid)) 在ES中使用 aggs 和 cardinality
GET log/_search
"size": 0,
"aggs": {
"count": {
"cardinality": {
"field": "uuid"
//返回结果
……
"aggregations" : {
"count" : {
"value" : 277
用elasticsearch聚合函数实现distinct查询
jsiostream的博客
02-14
9219
1.等价的sql
Sql代码 :
SELECT DISTINCT field1,field2 FROM test_index.test_type
等价于
Sql代码:
SELECT field1,field2 FROM test_index.test_type GROUP BY field1,field2
Controller:
这是根据类型和传过来的可变字段key来查询
/**
...
【Elasticsearch】ES正确查询文档数不要使用_search的hit而是使用_count
Code Metaverse
02-20
3593
hit
使用hit作为查询的计数是错误的。
当我们执行一个查询,比如下面的查询
GET /my-index-000001/_search
"query": {
"term": {
"user.id": "kimchy"
可能得到以下结果
"took": 5,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
Java操作Elasticsearch6实现group by分组查询
Dream it Possible
11-18
4656
引言
通过上篇博客的总结,我们知道了在Elasticsearch6中count、distinct和count(distinct)方法的使用。本篇博客继续聚合查询的学习,也就是对应mysql中的group by的使用。
公共实体
对于下面要介绍的查询,返回结果为统一实体,代码如下:
/**
* 单个字段分组返回结果
* @author : huzhiting
* @date : 2020-11-18 15:02
*/
@Data
public class AggregationForOneDTO
es基本语句详解 查询语句详解
WHX的博客
07-28
7623
es基本语句详解 查询语句详解声明Rest风格索引的基本操作1. 创建一个索引2. 查看索引 我们使用elasticsearch-head3. 删除索引其它命令==文档的基本操作(重点)==添加数据修改文档删除文档查找(重重重点)通过id查找通过某个字段查找指定条件查找结果过滤排序分页查询多条件或与非查找过滤器:范围查找精确查找高亮查询
声明
本文涉及的es, elasticsearch-head, kibana, ik分词器的安装配置可以参考我的其它博客
本文主要参考狂神说java视频课程编写。主要是为了
Elasticsearch实战(十七)---ES搜索如何使用In操作查询及如何Distinct去除重复数据
流浪的喵的博客
07-17
3343
ES搜索如何使用In操作查询, 如何使用 filter过滤, 多层filter 过滤,如何caidinality去除重复数据
java中实现es count distinct
weixin_45607374的博客
04-11
2696
需求
说一下最近项目中碰到的一个es方面的需求:在一个字段columnB里面,获取特定值0的总数据量,
然后在这些数据里面,再做另一个字段columnA的去重并得到该字段值的集合
方案
两种方案写成sql类似如下:
两次es查询:SELECT COUNT(columnA) from es where columnB = 0;
SELECT DISTINCT columnA from es whe...
Elasticsearch 常用聚合(group by || sum || count)分组查询
Qensq的博客
11-15
8609
1.elasticsearch 对指定字段分组,求出分组后每个参数的总金额
例如:求出每个人的总金额
GET index_name/_search
"query": {
"match_all": {}
},
"aggs": {
"group_by_name": {
"terms": {
"field": "name",
...
elasticsearch去重计数(distinct)
热门推荐
jsky_studio的专栏
03-02
4万+
如果需要针对ES索引统计某个字段上出现的不同值的个数时,可以使用cardinality聚合查询完成:
GET /urlAttributes/_search?search_type=count
"aggs": {
"uniq_attr": {
"cardinality": {
"field": "domain"
}12
ElasticSearch中distinct、count和group by的实现
木头人的博客
06-23
693
原文地址
https://www.jianshu.com/p/62bed9cc8349
1 - distinct
SELECT DISTINCT(user_id) FROM table WHERE user_id_type = 3;
"query": {
"term": {
"user_id_type": 3
},
"collapse": {
"field": "user_id"
...
"hits": {
"hi
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:技术黑板
设计师:CSDN官方博客
返回首页
roshy
CSDN认证博客专家
CSDN认证企业博客
码龄17年
暂无认证
79
原创
3万+
周排名
59万+
总排名
55万+
访问
等级
6057
积分
162
粉丝
182
获赞
154
评论
642
收藏
私信
关注
热门文章
POP3、SMTP和IMAP之间的区别和联系
25296
公网IP和内网IP
24672
【网络】NAT(网络地址转换)的三种不同实现方式
22956
【大数据】es启动报错: Native controller process has stopped - no new native processes can be started
19226
镜像相关:端口镜像、流量镜像
14638
分类专栏
网络协议
1篇
技术调研
操作系统
赚钱
职场小记
笔记
教学
AI
1篇
JAVA
1篇
5G
1篇
C++
3篇
Symbian
5篇
Windows
2篇
网络组网
14篇
汇编语言
1篇
大数据
6篇
数据库
1篇
web开发
4篇
网络安全
9篇
Linux
7篇
调试环境
13篇
开源产品方案
8篇
恶意代码分析
虚拟化
1篇
云计算
1篇
运维
4篇
python
4篇
个人
最新评论
python pycharm无法设置字体大小解决
2201_75315725:
感谢!!撒花~~
【网络组网】:H3C的vSYS参考
qq_47730379:
请问新增context会影响设备既有业务吗,比如是否需要重启系统?
【汇编】2、从汇编源码逐步分析函数调用过程
roshy:
感谢你的认可,这也是这篇文章的意义所在。
【汇编】2、从汇编源码逐步分析函数调用过程
Code:016:
但是对于我这种到懂不懂的人真的挺有帮助,我花了可能20分钟一句一句慢慢理解,真的听通透的
es ElasticSearch中"distinct","count"和"group by"的实现
BitHachi:
感谢大佬分享
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
chrome误删收藏夹书签如何恢复?
养成良好的定位问题的习惯和心理
【C++】公积金贷款计算器
2021年10篇
2020年12篇
2019年56篇
2018年9篇
2010年4篇
2009年2篇
2008年13篇
目录
目录
分类专栏
网络协议
1篇
技术调研
操作系统
赚钱
职场小记
笔记
教学
AI
1篇
JAVA
1篇
5G
1篇
C++
3篇
Symbian
5篇
Windows
2篇
网络组网
14篇
汇编语言
1篇
大数据
6篇
数据库
1篇
web开发
4篇
网络安全
9篇
Linux
7篇
调试环境
13篇
开源产品方案
8篇
恶意代码分析
虚拟化
1篇
云计算
1篇
运维
4篇
python
4篇
个人
目录
评论 1
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值