配置:
ES存儲了2-3億條,幾百GB
ES集群有5 個節點
2主2副
ES返回數據量窗口大小設置
index.max_result_window
深度翻頁
1.from + size 方式
2.scroll相當于維護了一份當前索引段的快照信息,這個快照信息是你執行這個scroll查詢時的快照。在這個查詢后的任何新索引進來的數據,都不會在這個快照中查詢到。
但是它相對于from和size,不是查詢所有數據然后剔除不要的部分,而是記錄一個讀取的位置,保證下一次快速繼續讀取
缺點:
「scroll_id會占用大量的資源(特別是排序的請求)」
同樣的,scroll后接超時時間,頻繁的發起scroll請求,會出現一些列問題。
「是生成的歷史快照,對于數據的變更不會反映到快照上。」
「優點:」
適用于非實時處理大量數據的情況,比如要進行數據遷移或者索引變更之類的。
3.es維護一個實時游標,它以上一次查詢的最后一條記錄為游標,方便對下一頁的查詢,它是一個無狀態的查詢,因此每次查詢的都是最新的數據。
由于它采用記錄作為游標,因此**「SearchAfter要求doc中至少有一條全局唯一變量(每個文檔具有一個唯一值的字段應該用作排序規范)」**
「優點:」
無狀態查詢,可以防止在查詢過程中,數據的變更無法及時反映到查詢中。
不需要維護scroll_id,不需要維護快照,因此可以避免消耗大量的資源。
「缺點:」
由于無狀態查詢,因此在查詢期間的變更可能會導致跨頁面的不一值。
排序順序可能會在執行期間發生變化,具體取決于索引的更新和刪除。
至少需要制定一個唯一的不重復字段來排序。
它不適用于大幅度跳頁查詢,或者全量導出,對第N頁的跳轉查詢相當于對es不斷重復的執行N次search after,而全量導出則是在短時間內執行大量的重復查詢。