1. 程式人生 > >Elasticsearch 使用scroll滾動技術實現大資料量搜尋

Elasticsearch 使用scroll滾動技術實現大資料量搜尋

如果一次性要查出來比如10萬條資料,那麼效能會很差,此時一般會採取用scroll滾動查詢,一批一批的查,直到所有資料都查詢完為止。

  1. scroll搜尋會在第一次搜尋的時候,儲存一個當時的檢視快照,之後只會基於該舊的檢視快照提供資料搜尋,如果這個期間資料變更,是不會讓使用者看到的
  2. 採用基於_doc(不使用_score)進行排序的方式,效能較高
  3. 每次傳送scroll請求,我們還需要指定一個scroll引數,指定一個時間視窗,每次搜尋請求只要在這個事件視窗內能完成就可以了
//sort預設是相關度排序("sort":[{"FIELD":{"order":"desc"}}]),不按_score排序,按_doc排序
//size設定的是這批查三條 //第一次查詢會生成快照 GET /lib3/user/_search?scroll=1m #這一批查詢在一分鐘內完成 { "query":{ "match":{} }, "sort":[ "_doc" ], "size":3 } //第二次查詢通過第一次的快照ID來查詢,後面以此類推 GET /_search/scroll { "scroll":"1m", "scroll_id":"DnF1ZXJ5VGhIbkXIdGNoAwAAAAAAAAAdFkEwRENOVTdnUUJPWVZUd1p2WE5hV2cAAAAAAAAAHhZBMERDTIU3Z1FCT1|WVHdadIhOYVdnAAAAAAAAAB8WQTBEQ05VN2dRQk9ZVIR3WnZYTmFXZw=="
}