2015-08-14 14:26:06 -04:00
|
|
|
=== CRUD and routing changes
|
|
|
|
|
|
|
|
==== Explicit custom routing
|
|
|
|
|
|
|
|
Custom `routing` values can no longer be extracted from the document body, but
|
|
|
|
must be specified explicitly as part of the query string, or in the metadata
|
|
|
|
line in the <<docs-bulk,`bulk`>> API. See <<migration-meta-fields>> for an
|
|
|
|
example.
|
|
|
|
|
|
|
|
==== Routing hash function
|
|
|
|
|
|
|
|
The default hash function that is used for routing has been changed from
|
|
|
|
`djb2` to `murmur3`. This change should be transparent unless you relied on
|
|
|
|
very specific properties of `djb2`. This will help ensure a better balance of
|
|
|
|
the document counts between shards.
|
|
|
|
|
|
|
|
In addition, the following routing-related node settings have been deprecated:
|
|
|
|
|
|
|
|
`cluster.routing.operation.hash.type`::
|
|
|
|
|
|
|
|
This was an undocumented setting that allowed to configure which hash function
|
|
|
|
to use for routing. `murmur3` is now enforced on new indices.
|
|
|
|
|
|
|
|
`cluster.routing.operation.use_type`::
|
|
|
|
|
|
|
|
This was an undocumented setting that allowed to take the `_type` of the
|
|
|
|
document into account when computing its shard (default: `false`). `false` is
|
|
|
|
now enforced on new indices.
|
|
|
|
|
|
|
|
==== Delete API with custom routing
|
|
|
|
|
|
|
|
The delete API used to be broadcast to all shards in the index which meant
|
|
|
|
that, when using custom routing, the `routing` parameter was optional. Now,
|
|
|
|
the delete request is forwarded only to the document holding the shard. If you
|
|
|
|
are using custom routing then you should specify the `routing` value when
|
|
|
|
deleting a document, just as is already required for the `index`, `create`,
|
|
|
|
and `update` APIs.
|
|
|
|
|
|
|
|
To make sure that you never forget a routing value, make routing required with
|
|
|
|
the following mapping:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
---------------------------
|
|
|
|
PUT my_index
|
|
|
|
{
|
|
|
|
"mappings": {
|
|
|
|
"my_type": {
|
|
|
|
"_routing": {
|
|
|
|
"required": true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
---------------------------
|
|
|
|
|
|
|
|
==== All stored meta-fields returned by default
|
|
|
|
|
|
|
|
Previously, meta-fields like `_routing`, `_timestamp`, etc would only be
|
|
|
|
included in a GET request if specifically requested with the `fields`
|
|
|
|
parameter. Now, all meta-fields which have stored values will be returned by
|
|
|
|
default. Additionally, they are now returned at the top level (along with
|
|
|
|
`_index`, `_type`, and `_id`) instead of in the `fields` element.
|
|
|
|
|
|
|
|
For instance, the following request:
|
|
|
|
|
|
|
|
[source,sh]
|
|
|
|
---------------
|
|
|
|
GET /my_index/my_type/1
|
|
|
|
---------------
|
|
|
|
|
|
|
|
might return:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
---------------
|
|
|
|
{
|
|
|
|
"_index": "my_index",
|
|
|
|
"_type": "my_type",
|
|
|
|
"_id": "1",
|
2015-10-08 07:23:29 -04:00
|
|
|
"_timestamp": 10000000, <1>
|
2015-08-14 14:26:06 -04:00
|
|
|
"_source": {
|
|
|
|
"foo" : [ "bar" ]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
---------------
|
|
|
|
<1> The `_timestamp` is returned by default, and at the top level.
|
|
|
|
|
|
|
|
|
|
|
|
==== Async replication
|
|
|
|
|
|
|
|
The `replication` parameter has been removed from all CRUD operations
|
|
|
|
(`index`, `create`, `update`, `delete`, `bulk`) as it interfered with the
|
|
|
|
<<indices-synced-flush,synced flush>> feature. These operations are now
|
|
|
|
synchronous only and a request will only return once the changes have been
|
|
|
|
replicated to all active shards in the shard group.
|
|
|
|
|
|
|
|
Instead, use more client processes to send more requests in parallel.
|
|
|
|
|
|
|
|
==== Documents must be specified without a type wrapper
|
|
|
|
|
|
|
|
Previously, the document body could be wrapped in another object with the name
|
|
|
|
of the `type`:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------
|
|
|
|
PUT my_index/my_type/1
|
|
|
|
{
|
|
|
|
"my_type": { <1>
|
|
|
|
"text": "quick brown fox"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------
|
|
|
|
<1> This `my_type` wrapper is not part of the document itself, but represents the document type.
|
|
|
|
|
|
|
|
This feature was deprecated before but could be reenabled with the
|
|
|
|
`mapping.allow_type_wrapper` index setting. This setting is no longer
|
|
|
|
supported. The above document should be indexed as follows:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------
|
|
|
|
PUT my_index/my_type/1
|
|
|
|
{
|
|
|
|
"text": "quick brown fox"
|
|
|
|
}
|
|
|
|
--------------------------
|
|
|
|
|
|
|
|
==== Term Vectors API
|
|
|
|
|
|
|
|
Usage of `/_termvector` is deprecated in favor of `/_termvectors`.
|
|
|
|
|