es深度分頁問題


1. from+size

es 默認采用的分頁方式是 from+ size 的形式,在深度分頁的情況下,這種使用方式效率是非常低的,比如

from = 5000, size=10, es 需要在各個分片上匹配排序並得到5000*10條有效數據,然后在結果集中取最后10條,

es默認是10000條數據,可以通過設置max_result_window 值來改變最大數據量;

2.scroll

為了滿足深度分頁的場景,es 提供了 scroll 的方式進行分頁讀取。原理上是對某次查詢生成一個游標 scroll_id , 后續的查詢只需要根據這個游標去取數據,直到結果集中返回的 hits 字段為空,就表示遍歷結束。scroll_id 的生成可以理解為建立了一個臨時的歷史快照,在此之后的增刪改查等操作不會影響到這個快照的結果。
scroll方式官方的建議並不是用於實時的請求,因為每一個 scroll_id 不僅會占用大量的資源(特別是排序的請求),而且是生成的歷史快照,對於數據的變更不會反映到快照上。這種方式往往用於非實時處理大量數據的情況,比如要進行數據遷移或者索引變更之類的

3.search_after

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM