批量读取elasticsearch别名中的所有文档

时间:2016-10-06 16:31:22

标签: elasticsearch

我有以下弹性搜索设置:

  • 4到6个小指数(<500万个文档,每个<5Gb)
  • 他们通过别名联合
  • 它们都包含相同的文档类型
  • 他们很少更改非常(即,在创建索引时会发生> 99%的索引)

我的应用程序的一个用例需要读取别名的所有文档,按字段排序,做一些魔术并提供结果。

我理解使用深度分页很可能会导致我的群集崩溃,或者至少有令人沮丧的性能,所以我想知道scroll API是否可以成为解决方案。我知道文档说它不是用于实时用户查询,但实际原因是什么?

一般来说,人们如何处理必须阅读索引中的所有文档?我应该寻找另一种方法来分块数据吗?

1 个答案:

答案 0 :(得分:0)

当您使用滚动API时,Elasticsearch会为索引的当前状态创建一种游标,因此不推荐用于实时搜索的原因是因为您不会看到之后插入的任何新文档你创建了滚动令牌。

由于您的用例表明您很少更新或在索引中插入新文档,这可能不是您的问题。

生成滚动令牌时,您可以指定带有排序的查询,因此,如果您的文档具有某种时间戳,则可以为所有带有timestamp: { lte: "now" }和另一个滚动的文档创建一个滚动上下文(或者每个简单查询)通过指定特定日期范围过滤器,未包含在第一个搜索上下文中的其余文档。