分页Elasticsearch聚合结果

想象一下,我有两种记录:一个存储桶和一个项目,其中存储在存储桶中的项目,而存储桶中的项目可能相对较少(通常不超过4个,从不超过10个)。这些记录被压缩为一个(具有更多存储桶信息的项目),并放置在Elasticsearch中。我要解决的任务是通过依赖项属性的过滤查询一次找到500个存储桶(最大),其中包含所有相关项,而我受困于限制/抵消聚合。我该如何执行此类任务?我看到top_hits聚合使我可以控制相关项目的大小,但是我找不到线索如何控制返回的存储桶的大小。

更新

:好的,我非常愚蠢。聚合的size参数terms为我提供了限制。有什么方法可以执行胶印任务吗?我不需要100%的精度,并且可能永远不会分页显示这些结果,但是无论如何我都希望看到此功能。

回答:

我认为我们不会很快看到此功能,请参阅GitHub上的相关讨论。

分页很难实现,因为当shard_size小于字段基数和按计数desc排序时,术语聚合的文档计数不准确。因此,可能会发生奇怪的事情,例如第二页的第一项的计数高于第一页的最后一个元素,等等。

提到了一种有趣的方法,您可以在第1页上请求类似前20个结果,然后在第2页上运行相同的聚合,但排除您已经在上一页中看到的那20个术语,依此类推。但是,这不允许您“随机”访问任意页面,您必须按顺序浏览页面。

…如果与匹配的文档数量相比,唯一值的数量有限,则在客户端进行分页会更高效。另一方面,在高基数字段上,基于排除的第一种方法可能会更好。

以上是 分页Elasticsearch聚合结果 的全部内容, 来源链接: utcz.com/qa/421583.html

回到顶部