弹性搜索-滚动行为

唠叨

我遇到了至少两种可能的方式来批量获取结果。

  1. 滚动API

  2. 分页-从,大小参数

根本区别是什么?我假设#1允许滚动记录,而#2允许您一次提取一批记录。如果我只是使用不同的From,Size参数来驱动分页,是否有可能以相同的批次返回相同的记录?

使用from / size是默认和最简单的分页结果方法。默认情况下,它最多只能使用10000。您可以增加该限制,但不建议这样做,因为深度分页会降低群集的性能。

滚动API将允许您将所有的数据分页了。它的工作方式是通过创建搜索上下文(即开始滚动时的数据快照),然后您将获得一个游标以对所有数据进行分页。完成后,您可以关闭搜索上下文。创建的搜索上下文具有关联的成本(需要状态,因此需要内存),因此这种分页方式不适合实时分页(对于批量式分页而言则更多)。

还有另一种滚动所有数据的方式,而无需每次都创建专用的搜索上下文而产生了额外费用,因此将其称为search_after在这种情况下,我们的想法是对数据进行排序,然后将排序值用作轻量级游标。它可能会有一些缺点,例如,如果您不断索引新数据,则可能会冒着丢失可能出现在先前“页面”上的新数据的风险。

在7.10中,将存在另一种分页数据的方式,称为时间点搜索(PIT)这里的想法再次是创建一个上下文,以便您可以在两个不同的调用中尽快返回匹配和聚合(稍后)。

更新

7.10于2020年11月11日发布,即时点搜索现在也可用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章