
[[breaking_50_rest_api_changes]]
=== REST API changes

==== id values longer than 512 bytes are rejected

When specifying an `_id` value longer than 512 bytes, the request will be
rejected.

==== `/_optimize` endpoint removed

The deprecated `/_optimize` endpoint has been removed. The `/_forcemerge`
endpoint should be used in lieu of optimize.

The `GET` HTTP verb for `/_forcemerge` is no longer supported, please use the
`POST` HTTP verb.

==== Removed `mem` section from `/_cluster/stats` response

The `mem` section contained only one value, the total memory available
throughout all nodes in the cluster. The section was removed as it didn't
prove useful.

==== Revised node roles aggregate returned by `/_cluster/stats`

The `client`, `master_only`, `data_only` and `master_data` fields have been
removed in favor of `master`, `data`, `ingest` and `coordinating_only`. A
node can contribute to multiple counts as it can have multiple roles. Every
node is implicitly a coordinating node, so whenever a node has no explicit
roles, it will be counted as coordinating only.

==== Removed shard `version` information from `/_cluster/state` routing table

We now store allocation id's of shards in the cluster state and use that to 
select primary shards instead of the version information. 

==== Node roles are not part of node attributes anymore

Node roles are now returned in a specific section, called `roles`, as part of
nodes stats and nodes info response. The new section is an array that holds all
the different roles that each node fulfills. In case the array is returned
empty, that means that the node is a coordinating only node.

==== Forbid unquoted JSON

Previously, JSON documents were allowed with unquoted field names, which isn't
strictly JSON and broke some Elasticsearch clients. If documents were already
indexed with unquoted fields in a previous vesrion of Elasticsearch, some
operations may throw errors. To accompany this, a commented out JVM option has
been added to the `jvm.options` file:
`-Delasticsearch.json.allow_unquoted_field_names`.

Note that this option is provided solely for migration purposes and will be
removed in Elasticsearch 6.0.0.

==== Analyze API changes

The deprecated `filters`/`token_filters`/`char_filters` parameter has been
renamed `filter`/`token_filter`/`char_filter`.

==== `DELETE /_query` endpoint removed

The `DELETE /_query` endpoint provided by the Delete-By-Query plugin has been
removed and replaced by the <<docs-delete-by-query,Delete By Query API>>.
