elasticsearch可以使用preference參數來指定分片查詢的優先級,使用時就是在請求url上加上preference參數,如:http://ip:host/index/_search?preference=_primary
java的調用接口翻譯為:client.prepareSearch("index").setPreference("_primary")。
默認情況下es有5種查詢優先級:
_primary: 指查詢只在主分片中查詢
_primary_first: 指查詢會先在主分片中查詢,如果主分片找不到(掛了),就會在副本中查詢。
_local: 指查詢操作會優先在本地節點有的分片中查詢,沒有的話再在其它節點查詢。
_only_node:指在指定id的節點里面進行查詢,如果該節點只有要查詢索引的部分分片,就只在這部分分片中查找,所以查詢結果可能不完整。如_only_node:123在節點id為123的節點中查詢。
Custom (string) value:用戶自定義值,指在參數cluster.routing.allocation.awareness.attributes指定的值,如這個值設置為了zone,那么preference=zone的話就在awareness.attributes=zone*這樣的節點搜索,如zone1、zone2。