1. 程式人生 > >ES 中跳躍問題和查詢大量資料問題

ES 中跳躍問題和查詢大量資料問題

1. preference 決定了哪些shard會被用來執行搜尋操作 bouncing result問題,倆個document排序,field值相同,不同的shard上,可能排序不同,每次請求輪詢打到不同的replica shard上 每次頁面上看到的搜尋結果的排序都不一樣,這就是bouncing result,也就是跳躍的結果

解決方案: 將preference設定為一個字串,比如說user_id,讓每個user搜尋的時候都使用同一個replica shard去執行,就不會看到 bouncing results了

如果一次性要查出來比如10萬條資料,那麼效能會很差,此時一般會採取用scoll滾動查詢,一批一批的查,知道所有資料都查詢處理完

使用scoll滾動搜尋,可以先搜尋一批資料,然後下一次在搜尋一批資料,以此類推,知道搜尋出全部的資料來,scoll搜尋會在第一次 搜尋的時候,儲存一個當時的檢視快照,之後會基於該舊的檢視快照提供資料搜尋,採用基於_doc進行排序方式,效能較高,每次傳送 scroll請求,我們還需要指定一個scoll引數,指定一個時間視窗,每次搜尋請求只要在這個時間視窗就好了。 GET /index/type/_search?scroll=1m