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

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

=== Search changes

==== `search_type=scan` deprecated

The `scan` search type has been deprecated. All benefits from this search
type can now be achieved by doing a scroll request that sorts documents in
`_doc` order, for instance:

[source,sh]
---------------
GET /my_index/_search?scroll=2m
{
  "sort": [
    "_doc"
  ]
}
---------------

Scroll requests sorted by `_doc` have been optimized to more efficiently resume
from where the previous request stopped, so this will have the same performance
characteristics as the former `scan` search type.

=== Update changes

==== Updates now `detect_noop` by default

We've switched the default value of the `detect_noop` option from `false` to
`true`. This means that Elasticsearch will ignore updates that don't change
source unless you explicitly set `"detect_noop": false`. `detect_noop` was
always computationally cheap compared to the expense of the update which can be
thought of as a delete operation followed by an index operation.

=== Removed features

==== `indices.fielddata.cache.expire`

The experimental feature `indices.fielddata.cache.expire` has been removed.
For indices that have this setting configured, this config will be ignored.

=== More Like This

The MoreLikeThisQueryBuilder#ignoreLike methods have been deprecating in favor
to using the unlike methods.

MoreLikeThisBuilder#addItem has been deprecated in favor to using
MoreLikeThisBuilder#addLikeItem.