游標查詢簡單學習

2021-10-06 20:30:55 字數 851 閱讀 8564

7.x版本 設定每次查詢的獲取時間為1m 這個過期時間只需要足夠處理當前批資料即可,而不是處理查詢結果的所有文件需要的時間。 可以使用_doc 進行排序 可以避免全域性排序深度分頁

滾動請求具有優化功能,可以使排序順序為時更快_doc。如果要遍歷所有文件而不考慮順序,這是最有效的選擇:

get /_search?scroll=1m},

"size": 1000

,"sort": [

"_doc"

]}

查詢的結果會返回乙個欄位_scroll_id 查詢下一批結果需要傳遞_scroll_id 以及 scroll 過期值

儘管我們設定的size為1000,但是size作用於單個分片。所以我們每次返回的文件數量最大是 size * number_of_primary_shards

下一次進行查詢的時候get 或者post請求都可以,但是不能再指定index,因為他是基於scroll_id 在原始請求中獲取接下來的資料

get _search/scroll

get /_nodes/stats/indices/search

scroll超過超時時間後,搜尋上下文將自動刪除。但是,如上一節所述,保持滾動開啟是有代價的, 因此,一旦不再使用clear-scrollapi 使用滾動,則應立即清除滾動
delete /_search/scroll

多個滾動id可以作為陣列傳遞:
delete /_search/scroll

可以使用以下_all引數清除所有搜尋上下文:
delete _search/scroll/_all

游標查詢scroll

scroll查詢 可以用來對 elasticsearch 有效地執行大批量的文件查詢,而又不用付出深度分頁那種代價。游標查詢允許我們 先做查詢初始化,然後再批量地拉取結果。這有點兒像傳統資料庫中的 cursor 游標查詢會取某個時間點的快照資料。查詢初始化之後索引上的任何變化會被它忽略。它通過儲存舊...

簡單的游標

為什麼要用到游標呢?因為我們都知道,在pl sql 中,每次只能返回單行的資料,當返回多行時,資料庫會報錯,所以,游標就誕生了。那游標又是如何做得到呢?原來,游標類似於指標一樣,他可以逐行的讀取sql,然後輸出。我們可以通過以下步驟,定義和使用游標 1 申明 declare 乙個游標 2 開啟 op...

簡單游標分析

set nocount on 建立測試環境 當 set nocount 為 on 時,不返回計數 declare tb table id int 定義臨時表 insert tb id 插入資料 select id 1 union all select id 2 union all select id...