【发布时间】:2016-11-24 01:44:23
【问题描述】:
我有一个包含约 3m 文档的 ES 2 索引,并且我正在对具有经典幂律频率分布的相对高基数字段(约 1m 唯一值)进行重要的术语聚合(其中一些唯一值非常频繁,其他大多数形成低计数的长尾)。
这种聚合非常昂贵且速度慢,因此我开始研究 ES 2 的新 sampler aggregation 功能。它作为父聚合工作,使子聚合对数据样本起作用。但是,我想更好地了解它是如何工作的,因为关于这个主题的文档很少。
我使用 shard_size 参数作为 200 的采样器聚合,我得到的结果与未采样的重要术语聚合大不相同。此外,有时采样聚合不会返回任何结果。所以我试图了解采样发生在过程中的哪个点。
如果x 是重要术语聚合中的桶之一,y 是过滤后的语料库的大小,则其显着性度量由 significance of x in subset y = [ (count x in y / size y) / (x in corpus / size corpus) ] * [ (count x in y / size y) - (x in corpus / size corpus) ] 之类的东西给出,根据 JLH 分数的定义。
采样是在过滤之前立即应用于语料库还是应用于过滤后的集合y?我试图理解为什么有时我的采样聚合在我知道应该有一些结果时没有返回任何结果。我还注意到,如果我增加采样器聚合的shard_size 参数,我最终会得到一些结果。
【问题讨论】:
标签: elasticsearch