2014-09-24 45 views
0

我使用from/size pagination迭代大型未排序查詢結果集,同時索引而不是部分查詢結果集。忽略scroll/scan對我的方案更有效的高效解決方案,我可以期待一致的結果嗎?elasticsearch未分類大小/索引時分頁

據我所知,如果我同時索引作爲結果集的一部分的文檔,我應該期望重複和缺少結果。在這種情況下,我索引的文件是而不是部分結果集,我不確定我收到的不一致結果是否是由於此分頁策略而預期的行爲。

我正在使用elasticsearch版本1.2.2。我已經證實查詢的構建與文檔一致。

{ 
    "from" : 0, "size" : 50000, 
    "query" : { 
     "term" : { "user" : "kimchy" } 
    } 
} 

-

{ 
    "from" : 50000, "size" : 50000, 
    "query" : { 
     "term" : { "user" : "kimchy" } 
    } 
} 

總是返回文檔的正確數量(約260萬美元),大部分時間出現在正確地定義文件的副本少數(約10) 。

+1

如果您正在索引的文檔不是結果集的一部分,那麼他們沒有任何理由影響您的結果。 – ThomasC 2014-09-24 13:18:09

+0

是的,這是因爲碎片合併的緣故。 – dr0i 2017-03-21 13:22:46

回答

0

可以使用滾動/掃描分頁而不是從/ size分頁來解決不一致結果的問題。

我不確定我的使用from/size paging是否支持使用,但getting started文檔似乎表明它是。這可能表明彈性搜索1.2.2版的from/size分頁中存在一個錯誤,儘管我沒有進行必要的測試來識別或驗證這一點。

0

Deep Pagination除了通常跨越多個分片(https://www.elastic.co/guide/en/elasticsearch/guide/current/pagination.html)執行外,不能期望保存。所以即使不在同一時間編制索引(這肯定會破壞您的分頁),但在後臺會不時發生碎片的合併。發生這種情況時,您可能會丟失一份文檔,併爲其重新獲取副本。

所以:滾動/掃描。