1. 程式人生 > >elasticsearch核心知識--46.scroll技術滾動搜尋大量資料以及和FromSize分頁的本質區別和效能

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"
}