首页 » Web前端 » php对数组groupby技巧_ElasticSearch里实现SQL的group by功能

php对数组groupby技巧_ElasticSearch里实现SQL的group by功能

访客 2024-12-15 0

扫一扫用手机浏览

文章目录 [+]

福哥在给同福网增加全文搜索功能的时候碰着了一个需求,福哥想要调出“热门标签”列表,这个可以通过SQL语句的Group by来实现。
但是福哥想通过ElasticSearch来完成,毕竟ES的实行效率要快很多,那么如何通过ElasticSearch来实现类似SQL的Group by语句的效果呢?

通过研究创造了在ElasticSearch里面可以利用aggregations来仿照SQL的Group by语句效果,它不仅仅可以仿照还有更强大的功能,我们来学习一下吧~~

php对数组groupby技巧_ElasticSearch里实现SQL的group by功能

分组

首先我们先来一个例子,福哥要实现根据文档的作者ID进行分组,从而拿到一组作者ID列表。

php对数组groupby技巧_ElasticSearch里实现SQL的group by功能
(图片来自网络侵删)

SQL

SELECTauthorId,count()asdoc_countFROMdocsGROUPBYauthorIdLIMIT6

ES

{"from":0,"size":0,"aggs":{"gb_authorId":{"terms":{"field":"authorId","size":6}}}}分组后排序

接下来我们再来一个例子,福哥要根据文档绑定的标签ID进行分组,然后再根据分组后的数量进行排序,从而得到一组文档最多的标签ID列表。

SQL

SELECTdt.tagId,count()asdoc_countFROMdocsdINNERJOINdoc_tagdtONd.docId=dt.docIdGROUPBYdt.tagIdORDERBYdoc_countLIMIT6

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

标签:

相关文章

嘉铭大数据,引领时代潮流,助力企业腾飞

随着互联网技术的飞速发展,大数据已经成为当今时代的重要驱动力。嘉铭大数据作为我国大数据领域的佼佼者,凭借其卓越的技术实力和丰富的实...

Web前端 2024-12-17 阅读0 评论0

回功之路,探析企业如何实现可持续发展

在当今这个快速发展的时代,企业面临的市场竞争日益激烈。为了在激烈的市场竞争中脱颖而出,企业必须关注可持续发展,提高自身竞争力。而回...

Web前端 2024-12-17 阅读0 评论0

团风大数据,介绍团风发展新态势

近年来,随着大数据技术的飞速发展,各行各业都在积极拥抱这一新技术,以实现转型升级。团风县作为湖北省的一个重要县份,近年来也积极运用...

Web前端 2024-12-17 阅读0 评论0