scroll
查詢 可以用來對 elasticsearch 有效地執行大批量的文件查詢,而又不用付出深度分頁那種代價。
游標查詢允許我們 先做查詢初始化,然後再批量地拉取結果。 這有點兒像傳統資料庫中的 cursor
。游標查詢會取某個時間點的快照資料。 查詢初始化之後索引上的任何變化會被它忽略。 它通過儲存舊的資料檔案來實現這個特性,結果就像保留初始化時的索引 檢視
一樣。深度分頁的代價根源是結果集全域性排序,如果去掉全域性排序的特性的話查詢結果的成本就會很低。 游標查詢用字段_doc
來排序。 這個指令讓 elasticsearch 僅僅從還有結果的分片返回下一批結果。
啟用游標查詢可以通過在查詢的時候設定引數scroll
的值為我們期望的游標查詢的過期時間。 游標查詢的過期時間會在每次做查詢的時候重新整理,所以這個時間只需要足夠處理當前批的結果就可以了,而不是處理查詢結果的所有文件的所需時間。 這個過期時間的引數很重要,因為保持這個游標查詢視窗需要消耗資源,所以我們期望如果不再需要維護這種資源就該早點兒釋放掉。 設定這個超時能夠讓 elasticsearch 在稍後空閒的時候自動釋放這部分資源。
/old_index
/_search
?scroll=1m
},"sort":[
"_doc"
],"size"
:1000
}保持游標查詢視窗一分鐘。
關鍵字_doc
是最有效的排序順序。
這個查詢的返回結果包括乙個字段_scroll_id`, 它是乙個base64編碼的長字串 ((("scroll_id"))) 。 現在我們能傳遞字段 `_scroll_id
到_search/scroll
查詢介面獲取下一批結果:
/_search
/scroll
注意再次設定游標查詢過期時間為一分鐘。
這個游標查詢返回的下一批結果。 儘管我們指定字段size
的值為1000,我們有可能取到超過這個值數量的文件。
當查詢的時候, 字段size
作用於單個分片,所以每個批次實際返回的文件數量最大為size * number_of_primary_shards
。
注意游標查詢每次返回乙個新字段_scroll_id`。每次我們做下一次游標查詢, 我們必須把前一次查詢返回的字段 `_scroll_id
傳遞進去。 當沒有更多的結果返回的時候,我們就處理完所有匹配的文件了。
scroll事件詳解
以前眼高手低,不夠紮實,面試的時候總是處理過,卻想不出來細節,這次開始慢慢整理,蝸牛繼續爬坡 一般情況下,如果出現內容大於瀏覽器的時候,需要新增樣式 overflow scroll 關於scroll的樣式有以下可以根據需求調整 滾動條的設定 1.webkit scrollbar 滾動條整體部分,可以...
scroll家族屬性
首先,scroll家族包括4個屬性 接下來,我們先簡單看一下相關屬性。例1 doctype html html lang en head meta charset utf 8 title title style body style head body script type text html c...
游標查詢簡單學習
7.x版本 設定每次查詢的獲取時間為1m 這個過期時間只需要足夠處理當前批資料即可,而不是處理查詢結果的所有文件需要的時間。可以使用 doc 進行排序 可以避免全域性排序深度分頁 滾動請求具有優化功能,可以使排序順序為時更快 doc。如果要遍歷所有文件而不考慮順序,這是最有效的選擇 get sear...