2013-07-10 78 views
1

为了通过ElasticSearch加载所有文档索引,我使用以下轮询查询。从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,我还没有看到它如何扩展。

我很感谢每一个评论。


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

+0

您可能希望用计算类型扩展理论基础,特别是这些是按文档还是汇总。弹性搜索*可能*能够在服务器上执行一些这些计算,这比基于客户端的检索/计算/更新脚本更有效。 –

回答

0

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

相关问题