elasticsearch核心知識--46.scroll技術滾動搜尋大量資料以及和FromSize分頁的本質區別和效能
scroll和formsize的區別以及效能比較 可以參考這篇文章 點選開啟連結
分頁查詢時基於使用者檢視,scroll時基於批量查詢資料。
效能方面 由於scroll時儲存著上一次查詢的快照,類似於查詢的索引位置,所以效能時比fromsize好
第一部分:關於scroll搜尋大量資料
如果一次性要查出來比如10萬條資料,那麼效能會很差,此時一般會採取用scoll滾動查詢,一批一批的查,直到所有資料都查詢完處理完
使用scoll滾動搜尋,可以先搜尋一批資料,然後下次再搜尋一批資料,以此類推,直到搜尋出全部的資料來
scoll搜尋會在第一次搜尋的時候,儲存一個當時的檢視快照,之後只會基於該舊的檢視快照提供資料搜尋,如果這個期間資料變更,是不會讓使用者看到的
採用基於_doc進行排序的方式,效能較高
每次傳送scroll請求,我們還需要指定一個scoll引數,指定一個時間視窗
基本語法
GET /test_index/test_type/_search?scroll=1m 指定時間視窗
{
"query": {
"match_all": {}
},
"sort": [ "_doc" ],
"size": 3
}
下一次直接拿到返回的scrollId進行查詢即可
GET /_search/scroll
{
"scroll": "1m",
"scroll_id" : "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAACxeFjRvbnNUWVZaVGpHdklqOV9zcFd6MncAAAAAAAAsYBY0b25zVFlWWlRqR3ZJajlfc3BXejJ3AAAAAAAALF8WNG9uc1RZVlpUakd2SWo5X3NwV3oydwAAAAAAACxhFjRvbnNUWVZaVGpHdklqOV9zcFd6MncAAAAAAAAsYhY0b25zVFlWWlRqR3ZJajlfc3BXejJ3"
}