[[breaking-changes-2.2]]
== Breaking changes in 2.2

This section discusses the changes that you need to be aware of when migrating
your application to Elasticsearch 2.2.

[[float]]
=== Mapping APIs

==== Geo Point Type

The `geo_point` format has been changed to reduce index size and the time required to both index and query
geo point data. To make these performance improvements possible both `doc_values` and `coerce` are required
and therefore cannot be changed. For this reason the `doc_values` and `coerce` parameters have been removed
from the <<geo-point, geo_point>> field mapping.

[float]
=== Scripting and security

The Java Security Manager is being used to lock down the privileges available
to the scripting languages and to restrict the classes they are allowed to
load to a predefined whitelist.  These changes may cause scripts which worked
in earlier versions to fail.  See <<modules-scripting-security>> for more
details.

[float]
=== Field stats API

The field stats' response format has been changed for number based and date
fields. The `min_value` and `max_value` elements now return values as number
and the new `min_value_as_string` and `max_value_as_string` return the values
as string.

[float]
=== Default logging using systemd

In previous versions of Elasticsearch using systemd, the default logging
configuration routed standard output to `/dev/null` and standard error to
the journal. However, there are often critical error messages at
startup that are logged to standard output rather than standard error
and these error messages would be lost to the ether. The default has
changed to now route standard output to the journal and standard error
to inherit this setting (these are the defaults for systemd). These
settings can be modified by editing the `elasticsearch.service` file.

[float]
=== Java Client

Previously it was possible to iterate over `ClusterHealthResponse` to get information about `ClusterIndexHealth`.
While this is still possible, it requires now iterating over the values returned from `getIndices()`:

[source,java]
---------------
ClusterHealthResponse clusterHealthResponse = client.admin().cluster().prepareHealth().get();
for (Map.Entry<String, ClusterIndexHealth> index : clusterHealthResponse.getIndices().entrySet()) {
    String indexName = index.getKey();
    ClusterIndexHealth health = index.getValue();
}
---------------

[float]
=== Cloud AWS Plugin

Proxy settings have been deprecated and renamed:

* from `cloud.aws.proxy_host` to `cloud.aws.proxy.host`
* from `cloud.aws.ec2.proxy_host` to `cloud.aws.ec2.proxy.host`
* from `cloud.aws.s3.proxy_host` to `cloud.aws.s3.proxy.host`
* from `cloud.aws.proxy_port` to `cloud.aws.proxy.port`
* from `cloud.aws.ec2.proxy_port` to `cloud.aws.ec2.proxy.port`
* from `cloud.aws.s3.proxy_port` to `cloud.aws.s3.proxy.port`

If you are using proxy settings, update your settings as deprecated ones will
be removed in next major version.

[float]
=== Multicast plugin deprecated

The `discovery-multicast` plugin has been deprecated in 2.2.0 and has
been removed in 3.0.0.
