欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

白话Elasticsearch53-深入聚合数据分析之Collect Model_bucket优化机制:深度优先、广度优先

发布时间:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的这篇文章主要介绍了 白话Elasticsearch53-深入聚合数据分析之Collect Model_bucket优化机制:深度优先、广度优先 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 概述
  • 官网
  • 示例


概述

继续跟中华石杉老师学习ES,第53篇

课程地址: https://www.roncoo.com/view/55


官网

Collect Model:戳这里



示例

当buckets数量特别多的时候,深度优先和广度优先如何选择?

举个例子:每个演员的每个电影的评论

每个演员的评论的数量 --> 每个演员的每个电影的评论的数量

评论数量排名前10个的演员 --> 每个演员的电影取到评论数量排名前5的电影

{"aggs" : {"actors" : {"terms" : {"field" : "actors","size" : 10,"collect_mode" : "breadth_first" },"aggs" : {"costars" : {"terms" : {"field" : "films","size" : 5}}}}} }

深度优先的方式去执行聚合操作的

actor1 actor2 .... actor film1 film2 film3 film1 film2 film3 ...film

比如说,我们有10万个actor,最后其实是主要10个actor就可以了

但是我们已经深度优先的方式,构建了一整颗完整的树出来了,10万个actor,每个actor平均有10部电影,10万 + 100万 --> 110万的数据量的一颗树

裁剪掉10万个actor中的99990 actor,99990 * 10 = film,剩下10个actor,每个actor的10个film裁剪掉5个,110万 --> 10 * 5 = 50个

构建了大量的数据,然后裁剪掉了99.99%的数据,浪费了


广度优先的方式去执行聚合

actor1 actor2 actor3 ..... n个actor

10万个actor,不去构建它下面的film数据,10万 --> 去掉99990,10个actor,构建出film,裁剪出其中的5个film即可,10万 ->取 50个

和深度优先的方式(110万取50个)相比,10倍的优势

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的白话Elasticsearch53-深入聚合数据分析之Collect Model_bucket优化机制:深度优先、广度优先的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。