解決方法: elasticsearch可使用preference參數來指定分片查詢的優先級,使用時就是在請求url上加上preference參數,如:http://ip:host/index/_search?preference=_primaryjava
java的調用接口翻譯爲:client.prepareSearch(「index」).setPreference(「_primary」)。node
默認狀況下es有5種查詢優先級:elasticsearch
_primary: 指查詢只在主分片中查詢url
_primary_first: 指查詢會先在主分片中查詢,若是主分片找不到(掛了),就會在副本中查詢。翻譯
_local: 指查詢操做會優先在本地節點有的分片中查詢,沒有的話再在其它節點查詢。索引
_only_node:指在指定id的節點裏面進行查詢,若是該節點只有要查詢索引的部分分片,就只在這部分 分片中查找,因此查詢結果可能不完整。接口