# Preference

原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-preference.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-preference.html)

译文链接 : [http://www.apache.wiki/pages/editpage.action?pageId=4883104](http://www.apache.wiki/pages/editpage.action?pageId=488308)

贡献者 : [ping](/display/~wangyangting)

控制要对其执行搜索请求的分片副本的首选项。默认情况下，操作在分片副本之间是随机化的。

首选项是一个查询字符串参数，可以设置为：

| `_primary` | 操作将继续并只在主分片上执行。 |
| `_primary_first` | 操作将在主分片上执行，如果不可用（故障转移），将在其他分片上执行。 |
| `_replica` | 该操作将只在副本分片上执行。 |
| `_replica_first` | 操作将移动并仅在副本分片上执行，如果不可用（故障转移），则将在其他分片上执行。 |
| `_local` | 如果可能，操作将优选在本地分配的分片上执行。 |
| `_prefer_nodes:abc,xyz` | 在适用的情况下，在具有提供的节点标识（本例中为 abc 或 xyz ）的节点上优先执行。 |
| `_shards:2,3` | `将操作限制为指定的分片。（在这种情况下为 2 和 3 ）。此首选项可以与其他首选项组合，但必须首先显示：_shards：2,3 &#124; _primary` |
| `_only_nodes` | 将操作限制在节点说明中指定的节点 [https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.html) |
| Custom (string) value | 自定义值将用于保证相同的自定义值使用相同的分片。当在不同的刷新状态中匹配不同的分片时，这可以帮助“跳跃值”。示例值可以是 Web 会话 ID 或用户名。 |

例如，使用用户的会话 ID 来确保用户的结果的一致排序：

```
GET /_search?preference=xyzabc123
{
    "query": {
        "match": {
            "title": "elasticsearch"
        }
    }
}
```