ES深分頁
阿新 • • 發佈:2022-03-28
一、背景
1.ES預設分頁from+size
2.在大資料量和深度分頁的時候,效率非常低
二、效率低原因
1.例如要查第501頁的10條資料,from為5000,size為10
2.ES會查詢並排序5010條資料,即處理了from+size條資料
3.ES為了效能,限制了分頁數量,最大為1萬,max_result_window = 10000,因此不能分頁到1萬條資料以上
4.對於1萬條以上的資料查詢,ES直接返回查詢失敗
三、改進
1.方式一、scroll滾動搜尋
a.在第一次搜尋的時候,儲存一個檢視快照,之後基於檢視快照提供資料
b.無法查詢到實時資料
c.查詢語句,要指定scroll引數,值為時間視窗,例如scroll=5m
d.第一次查詢會返回scroll_id,之後的查詢要帶著scroll_id引數
2.方式二、search_after
a.ES5之後提供search_after,是假分頁方式,根據上一頁的最後一條,確定下一頁的位置
b.可以查詢到實時資料
c.類似於瀑布流式的分頁查詢
參考:
https://www.cnblogs.com/hello-shf/p/11543453.html