elasticsearch,tire,Ruby,elasticsearch,Tire" /> elasticsearch,tire,Ruby,elasticsearch,Tire" />

Ruby 从ElasticSearch加载所有文档花费的时间太长

Ruby 从ElasticSearch加载所有文档花费的时间太长,ruby,elasticsearch,tire,Ruby,elasticsearch,Tire,为了通过ElasticSearch加载所有文档索引,我通过tire使用以下查询 def all max = total Tire.search 'my_documents' do query { all } size max end.results.map { |entry| entry.to_hash } end 其中,max,分别是total是一个计数查询,用于返回当前文档的数量。我已经索引了大约10000个文档。目前,请求时间太长

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

  def all
    max = total
    Tire.search 'my_documents' do
      query { all }
      size max
    end.results.map { |entry| entry.to_hash }
  end
其中,
max
,分别是
total
是一个计数查询,用于返回当前文档的数量。我已经索引了大约10000个文档。目前,请求时间太长

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

我还计划将文档的大小扩展到100000甚至1000000,但我还不知道如何扩展

我感谢你的每一句话



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

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

您可能希望根据计算类型扩展您的基本原理,特别是这些计算是每个文档还是聚合的。弹性搜索可能能够在服务器上执行其中一些计算,这比基于客户端的检索/计算/更新脚本效率更高。