2013-08-28 19:24:34 -04:00
|
|
|
[[mapping-routing-field]]
|
|
|
|
=== `_routing`
|
|
|
|
|
|
|
|
The routing field allows to control the `_routing` aspect when indexing
|
|
|
|
data and explicit routing control is required.
|
|
|
|
|
|
|
|
[float]
|
|
|
|
==== store / index
|
|
|
|
|
|
|
|
The first thing the `_routing` mapping does is to store the routing
|
2014-12-26 17:23:41 -05:00
|
|
|
value provided (`store` set to `true`) and index it (`index` set to
|
2013-08-28 19:24:34 -04:00
|
|
|
`not_analyzed`). The reason why the routing is stored by default is so
|
|
|
|
reindexing data will be possible if the routing value is completely
|
|
|
|
external and not part of the docs.
|
|
|
|
|
|
|
|
[float]
|
|
|
|
==== required
|
|
|
|
|
|
|
|
Another aspect of the `_routing` mapping is the ability to define it as
|
|
|
|
required by setting `required` to `true`. This is very important to set
|
|
|
|
when using routing features, as it allows different APIs to make use of
|
|
|
|
it. For example, an index operation will be rejected if no routing value
|
|
|
|
has been provided (or derived from the doc). A delete operation will be
|
|
|
|
broadcasted to all shards if no routing value is provided and `_routing`
|
|
|
|
is required.
|
|
|
|
|
|
|
|
[float]
|
|
|
|
==== id uniqueness
|
|
|
|
|
|
|
|
When indexing documents specifying a custom `_routing`, the uniqueness
|
|
|
|
of the `_id` is not guaranteed throughout all the shards that the index
|
|
|
|
is composed of. In fact, documents with the same `_id` might end up in
|
|
|
|
different shards if indexed with different `_routing` values.
|