解决方法: 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的节点里面进行查询,若是该节点只有要查询索引的部分分片,就只在这部分 分片中查找,因此查询结果可能不完整。接口