[[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 <>. ==== Create stored script endpoint removed The `PUT /_scripts/{lang}/{id}/_create` endpoint that previously allowed to create indexed scripts has been removed. Indexed scripts have been replaced by <>. ==== Create stored template endpoint removed The `PUT /_search/template/{id}/_create` endpoint that previously allowed to create indexed template has been removed. Indexed templates have been replaced by <>. ==== Remove properties support Some REST endpoints (e.g., cluster update index settings) supported detecting content in the Java properties format (line-delimited key=value pairs). This support has been removed.