1

为了通过 ElasticSearch 加载所有文档索引,我通过轮胎使用以下查询。

  def all
    max = total
    Tire.search 'my_documents' do
      query { all }
      size max
    end.results.map { |entry| entry.to_hash }
  end

其中max,分别total是一个计数查询,用于返回当前文档的数量。我已经索引了大约 10,000 个文档。目前,请求时间过长。

我知道,我不应该像这样查询所有文档。这里最好的选择是什么?使用分页,如果是,我将根据哪个指标定义每页的文档数?

我还计划将文档的大小扩展到 100,000 甚至 1,000,000,但我还没有看到如何扩展。

我感谢每一条评论。


理由:我这样做是因为我正在对这些数据进行计算。因此,我需要所有数据,运行计算并将结果保存回文档中。

4

1 回答 1

0

看看滚动 API,它经过高度优化以获取大量结果。它使用扫描搜索类型,不支持排序,但允许您提供查询来过滤要获取的文档。查看参考资料以了解更多信息。请记住,您在请求中定义的大小是每个分片的;这意味着如果您有 5 个主分片,设置 10 将导致每个请求返回 50 个结果。

于 2013-07-12T11:30:08.447 回答