[[breaking_50_search_changes]] === Search and Query DSL changes ==== `search_type` ===== `search_type=count` removed The `count` search type was deprecated since version 2.0.0 and is now removed. In order to get the same benefits, you just need to set the value of the `size` parameter to `0`. For instance, the following request: [source,sh] --------------- GET /my_index/_search?search_type=count { "aggs": { "my_terms": { "terms": { "field": "foo" } } } } --------------- can be replaced with: [source,sh] --------------- GET /my_index/_search { "size": 0, "aggs": { "my_terms": { "terms": { "field": "foo" } } } } --------------- ===== `search_type=scan` removed The `scan` search type was deprecated since version 2.1.0 and is now removed. 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. ==== `fields` parameter The `fields` parameter used to try to retrieve field values from stored fields, and fall back to extracting from the `_source` if a field is not marked as stored. Now, the `fields` parameter will only return stored fields -- it will no longer extract values from the `_source`. ==== search-exists API removed The search exists api has been removed in favour of using the search api with `size` set to `0` and `terminate_after` set to `1`. ==== Deprecated queries removed The following deprecated queries have been removed: `filtered`:: Use `bool` query instead, which supports `filter` clauses too. `and`:: Use `must` clauses in a `bool` query instead. `or`:: Use `should` clauses in a `bool` query instead. `limit`:: Use the `terminate_after` parameter instead. `fquery`:: Is obsolete after filters and queries have been merged. `query`:: Is obsolete after filters and queries have been merged. `query_binary`:: Was undocumented and has been removed. `filter_binary`:: Was undocumented and has been removed. ==== Changes to queries * Removed support for the deprecated `min_similarity` parameter in `fuzzy query`, in favour of `fuzziness`. * Removed support for the deprecated `fuzzy_min_sim` parameter in `query_string` query, in favour of `fuzziness`. * Removed support for the deprecated `edit_distance` parameter in completion suggester, in favour of `fuzziness`. * Removed support for the deprecated `filter` and `no_match_filter` fields in `indices` query, in favour of `query` and `no_match_query`. * Removed support for the deprecated `filter` fields in `nested` query, in favour of `query`. * Removed support for the deprecated `minimum_should_match` and `disable_coord` in `terms` query, use `bool` query instead. Also removed support for the deprecated `execution` parameter. * Removed support for the top level `filter` element in `function_score` query, replaced by `query`. * The `collect_payloads` parameter of the `span_near` query has been deprecated. Payloads will be loaded when needed. * The `score_type` parameter to the `nested`, has_child` and `has_parent` queries has been removed in favour of `score_mode`. Also, the `total` score mode has been removed in favour of the `sum` mode. * When the `max_children` parameter was set to `0` on the `has_child` query then there was no upper limit on how many child documents were allowed to match. Now, `0` really means that zero child documents are allowed. If no upper limit is needed then the `max_children` parameter shouldn't be specified at all. * The `exists` query will now fail if the `_field_names` field is disabled. ==== Top level `filter` parameter Removed support for the deprecated top level `filter` in the search api, replaced by `post_filter`. ==== Highlighters Removed support for multiple highlighter names, the only supported ones are: `plain`, `fvh` and `postings`. ==== Term vectors API The term vectors APIs no longer persist unmapped fields in the mappings. The `dfs` parameter to the term vectors API has been removed completely. Term vectors don't support distributed document frequencies anymore.