从ElasticSearch加载所有文档需要太长时间

时间:2013-07-10 11:42:09

标签: ruby elasticsearch tire

为了通过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,我还没有看到它如何扩展。

我感谢每一条评论。


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

1 个答案:

答案 0 :(得分:0)

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