分页elasticsearch聚合结果



假设我有两种记录:一个桶和一个项目,其中项目包含在一个桶中,桶可能有相对较少的项目(通常不超过4个,不超过10个)。这些记录被压缩成一个(包含额外桶信息的项)并放置在Elasticsearch中。我试图解决的任务是通过依赖于项目属性的过滤查询一次找到500桶(最多)与所有相关项目,并且我被限制/抵消聚合卡住。我该如何完成这样的任务?我看到top_hits聚合允许我控制相关项目数量的大小,但我找不到一个线索,我怎么能控制返回桶的大小。

update:好吧,我太笨了。terms聚合的size参数给我提供了限制。有办法执行补偿任务吗?我不需要100%的精度,可能永远不会页面这些结果,但无论如何,我想看到这个功能。

我认为我们不会很快看到这个功能,参见GitHub上的相关讨论。

分页实现起来很棘手,因为文档对术语计数当shard_size小于该字段时,聚合不精确基数和计数排序,所以奇怪的事情可能会发生,比如第二页的第一项比最后一项计数高元素等

提到了一个有趣的方法,你可以在第一页请求前20个结果,然后在第二页运行相同的聚合,但排除你已经在前一页看到的20个术语,等等。但这不能让你"随机"访问任意页面,你必须按顺序浏览页面。

…如果您只有有限数量的唯一值与在客户端执行分页操作的匹配文档的数量为更有效率。另一方面,在高基数字段中,您的第一种基于排除的方法可能更好。

最新更新