elasticsearch的分頁問題

1.from + size
傳統的from+size的方法在數據量小時,客戶端獲取要求有順序時可以使用。
2.scroll + scan
在數據量太大,尤其是需要遍歷全部數據時,應該使用這種方式。
原因:假設每頁大小為10,在獲取第1001頁時,es實際上是向每個分片發送請求第10000到10010的數據,每個分片會進行一次排序,如果有十個分片,就會獲取所有分片的前10個,因此給CPU和內存造成很大的壓力。使用scroll方式,es生成一個快照,并維護一個scroll_id,相當于一個索引下標,這個id有個有效期,在有效期內每次獲取都會遞增。

  1. scanning scroll 查詢與 standard scroll 查詢有幾點不同:
    A scanning scroll 查詢結果沒有排序,結果的順序是doc入庫時的順序;
    A scanning scroll 查詢不支持聚合
    A scanning scroll最初的查詢結果的“hits”列表中不會包含結果
    A scanning scroll 最初的查詢中如果設定了“size”,這個“size”是設定每個分片(shard)的數量,也就是說如果設定size=3,而有5個shard,每次返回結果的最大值就是3*5=15。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容