1. 程式人生 > 其它 >ES深分頁

ES深分頁

一、背景

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