2013-07-10 107 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個結果。

相關問題