具體來說,我使用Elasticsearch來做分頁,但是這個問題可能適用於任何數據庫。當源數據頻繁變化時如何處理分頁
Elasticsearch提供方法paginate search results與方便的from
和to
參數。
於是我運行一個查詢get me the most recent data from result 1 to 10
這個偉大的工程。
,用戶點擊「下一頁」,查詢是: get me the most recent data from result 11 to 20
的問題是,在這兩個查詢之間的時間,2個新的記錄已被添加到後備數據庫,這意味着分頁結果將重疊(第一頁的最後兩頁顯示爲第二頁的前兩頁)。
什麼是避免這種情況的最佳解決方案?現在,我在查詢中添加一個過濾器,告訴它只包含晚於上一個查詢結果的結果。但它似乎只是一件駭人聽聞的事。
感謝您的詳細解釋。出於某種原因,我認爲掃描/滾動是同樣的事情,但這顯然不是真的!當你沒有像最新的時間戳那樣過濾時,滾動似乎是一個不錯的選擇。 – bradvido 2015-01-15 21:45:27
時間戳過濾的缺點是,如果有人要刪除文檔,您可能會跳過下一頁結果中返回的文檔? – writofmandamus 2017-01-10 18:21:19
來自Scroll API文檔的注意事項'Scrolling不適用於實時用戶請求,' – Ben 2017-10-14 08:53:47