ElasticSearch的多维度聚合心得

       最近拿ElasticSearch当数据库使用,应用场景中用到了多维度聚合的需求。

       聚合需求是:项目id,渠道id,产品id这样的三维度聚合。变成SQL语句的话,大概是

SELECT
project_id,channel_id,item_id,SUM(sell_num),SUM(order_num),SUM(sale_income)
Group By project_id,channel_id,item_id

       如果按照project_id,channel_id,item_id这样的顺序构建Aggregation的话,最终的查询速度会非常的慢。后来,我想想,ElasticSearch的分组是按照提交的请求一级一级来的处理,因此,如果需要提高速度,应该在最开始的时候使用尽可能多的机器。那么方案应该是将最细粒度的维度先进行分组,也就是item_id,然后是project_id,最后是channel_id。

       实验证明,我的猜测是正确的。查询效率有了非常可观的增长。

猜你喜欢

转载自aeolus1983.iteye.com/blog/2333909