我們由前面知道,es的資料是分片進行儲存的,整體資料會被分布在不同的primary分片上面,因此,如果一次比較深度的分頁且排序的操作,成本將會比較大:
假如使用者要查詢5001-5050條資料,按照**由低到高進行排序,那麼es的查詢會發生什麼?
因為資料是分片儲存,因此需要每個分片都拿出自身的前5050條,然後整體排序後,取出5001-5050的資料,然後把無用的資料丟棄掉。這個成本隨著資料量的增加將難以預估!
因此建議:
1、當你的資料超過1w,不要使用深度分頁
2、返回結果不要超過1000個,500以下為宜
通過在_search後面指定scroll引數來使用:
scroll=1m,代表時間視窗是1分鐘
get /product/_search?scroll=1m
}, "sort":[
}],
"size"
: 2}
返回:
,
"hits":,
"max_score"
: null,
"hits":[
, "sort":[
99999
]}, ,
"sort":[
12999
]}]}}
移動游標,繼續得到後面的資料:
get /_search/scroll
第六天 風氣
第六天 風氣 答 人有了,就得定規矩,否則就是一幫烏合之眾,而不是團隊。1必須朝九晚五。嚴格控制員工手裡有辦公室鑰匙。下班必須準時鎖門,員工準時離開。斷公司外網。要加班必須上級主管簽字,更不准在辦公室留宿,洗澡。這一條很重要,不要讓程式設計師活得像個浪子,精神恍惚,口中神叨,鬍子拉碴,這都是浮動工作...
開課第六天
今天是開課第六天,老師上午沒有講課,講了一上午的題,下午又講了新知識,如下 1 順序結構 從上到下順序進行。2 分支結構 if boolean表示式 else switch 值 case 值 break case 值 break switch 執行流程,switch的值和case的值一一比較,如果一...
第六天學習
變數的作用域 區域性變數 在函式內部定義的變數,這個變數只能在函式內部使用,在全域性當中不能使用。使用就報錯了。全域性變數 在函式外部定義的變數,這個變數可以在全域性使用。但是我們一般不推薦使用全域性變數 因為可能會意外的修改掉變數的值。迫不得已不要用全域性變數 衝突處理原則 就近原則。而不是從上到...