一、分片
都知道一份數據只會在一個分片上出現,當分片數很多的情況,如果要查詢某個數據並且已知在某個分片上,那麼就可以指定分片查詢,避免ES在查詢的時候做無用功,效率低!
DSL方式
直接在URL上拼接分片參數即可,其參數爲preference=_shards:1
,其中數字1
就表示當前所在的分片數,示例如下:
GET /saas_order_info_now/_search?preference=_shards:1
{
// ....
}
Java方式
org.springframework.data.elasticsearch.core.query.AbstractQuery#setPreference
二、路由
同樣,路由也是一種提高查詢效率的一種方式。默認情況下,ES把_id
作爲每條文檔作爲路由,但是有時候業務的需要,我們指定某個字段作爲路由,那麼這個時候你可以指定路由的方式以達到快速查詢的目的。這個查詢方式也是與分片類似,具體參考該文章:https://blog.csdn.net/wangxuelei036/article/details/106634367