网站首页 > 博客文章 正文
介绍
介绍
福哥在给同福网增加全文搜索功能的时候遇到了一个需求,福哥想要调出“热门标签”列表,这个可以通过SQL语句的Group by来实现。但是福哥想通过ElasticSearch来完成,毕竟ES的执行效率要快很多,那么如何通过ElasticSearch来实现类似SQL的Group by语句的效果呢?
通过研究发现了在ElasticSearch里面可以使用aggregations来模拟SQL的Group by语句效果,它不仅仅可以模拟还有更强大的功能,我们来学习一下吧~~
分组
首先我们先来一个例子,福哥要实现根据文档的作者ID进行分组,从而拿到一组作者ID列表。
SQL
SELECT authorId, count(*) as doc_count FROM docs GROUP BY authorId LIMIT 6
ES
{
"from": 0,
"size": 0,
"aggs": {
"gb_authorId": {
"terms": {
"field": "authorId",
"size": 6
}
}
}
}
分组后排序
接下来我们再来一个例子,福哥要根据文档绑定的标签ID进行分组,然后再根据分组后的数量进行排序,从而得到一组文档最多的标签ID列表。
SQL
SELECT dt.tagId, count(*) as doc_count FROM docs d
INNER JOIN doc_tag dt
ON d.docId = dt.docId
GROUP BY dt.tagId ORDER BY doc_count LIMIT 6
ES
{
"from": 0,
"size": 0,
"aggs": {
"gb_tagIds": {
"terms": {
"field": "tagIds",
"order": {
"_count": "desc"
},
"size": 6
}
}
}
}
可以发现一个有趣的事情,在SQL里面为了实现这个目的用到了关联表进行分组。但是在ES里面可以直接对数组属性进行分组处理,而且排序语句没有变化,这个真的是很爽啊~~
排序字段
分组后的排序可以根据不同的依据进行排序,大家跟着福哥来了解一下吧!
_term
根据分组的字段的值进行排序,就是Group by后面的字段
_count
根据分组文档的数量进行排序,就是SELECT里面的count(*)出来的数字
总结
今天福哥给大家演示了在ES里通过aggs来实现SQL里的Group by的分组功能的效果,同样的分组目的使用ES可以获得更高的效率,这个在数量越大的时候效果越明显~~
https://m.tongfu.net/home/35/blog/513107.html
猜你喜欢
- 2024-10-04 TP5 where数组查询(模糊查询--多个查询条件)
- 2024-10-04 sql基础(六)(sql基本知识点)
- 2024-10-04 必知的php数组函数(必知的php数组函数有哪些)
- 2024-10-04 C# 数据操作系列 - 16 SqlSugar 完结篇(最后的精华)
- 2024-10-04 会SQL语句,就能快速开放你的数据接口API
- 2024-10-04 VBA数组与字典解决方案第46讲:进行数据的模糊分类汇总
- 2024-10-04 sqlite3 支持JSON(Sqlite3 支持网络访问)
- 2024-10-04 HeidiSQL 免费的可视化数据库管理工具
- 2024-10-04 实例讲解MyBatisPlus自定义sql注入器方法
- 2024-10-04 【实用技能】Seacms 8.7版本SQL注入分析
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)