2015-11-08 06:59:07 -05:00
|
|
|
[[breaking_20_search_changes]]
|
2015-08-14 14:26:06 -04:00
|
|
|
=== Search changes
|
|
|
|
|
|
|
|
==== Partial fields
|
|
|
|
|
|
|
|
Partial fields have been removed in favor of <<search-request-source-filtering,source filtering>>.
|
|
|
|
|
|
|
|
==== `search_type=count` deprecated
|
|
|
|
|
|
|
|
The `count` search type has been deprecated. All benefits from this search
|
|
|
|
type can now be achieved by using the (default) `query_then_fetch` search type
|
|
|
|
and setting `size` to `0`.
|
|
|
|
|
|
|
|
==== The count api internally uses the search api
|
|
|
|
|
|
|
|
The count api is now a shortcut to the search api with `size` set to 0. As a
|
|
|
|
result, a total failure will result in an exception being returned rather
|
|
|
|
than a normal response with `count` set to `0` and shard failures.
|
|
|
|
|
|
|
|
==== All stored meta-fields returned by default
|
|
|
|
|
|
|
|
Previously, meta-fields like `_routing`, `_timestamp`, etc would only be
|
|
|
|
included in the search results if specifically requested with the `fields`
|
|
|
|
parameter. Now, all meta-fields which have stored values will be returned by
|
|
|
|
default. Additionally, they are now returned at the top level (along with
|
|
|
|
`_index`, `_type`, and `_id`) instead of in the `fields` element.
|
|
|
|
|
|
|
|
For instance, the following request:
|
|
|
|
|
|
|
|
[source,sh]
|
|
|
|
---------------
|
|
|
|
GET /my_index/_search?fields=foo
|
|
|
|
---------------
|
|
|
|
|
|
|
|
might return:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
---------------
|
|
|
|
{
|
|
|
|
[...]
|
|
|
|
"hits": {
|
|
|
|
"total": 1,
|
|
|
|
"max_score": 1,
|
|
|
|
"hits": [
|
|
|
|
{
|
|
|
|
"_index": "my_index",
|
|
|
|
"_type": "my_type",
|
|
|
|
"_id": "1",
|
|
|
|
"_score": 1,
|
|
|
|
"_timestamp": 10000000, <1>
|
|
|
|
"fields": {
|
|
|
|
"foo" : [ "bar" ]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
---------------
|
|
|
|
<1> The `_timestamp` is returned by default, and at the top level.
|
|
|
|
|
|
|
|
|
|
|
|
==== Script fields
|
|
|
|
|
|
|
|
Script fields in 1.x were only returned as a single value. Even if the return
|
|
|
|
value of a script was a list, it would be returned as an array containing an
|
|
|
|
array:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
---------------
|
|
|
|
"fields": {
|
|
|
|
"my_field": [
|
|
|
|
[
|
|
|
|
"v1",
|
|
|
|
"v2"
|
|
|
|
]
|
|
|
|
]
|
|
|
|
}
|
|
|
|
---------------
|
|
|
|
|
|
|
|
In elasticsearch 2.0, scripts that return a list of values are treated as
|
|
|
|
multivalued fields. The same example would return the following response, with
|
|
|
|
values in a single array.
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
---------------
|
|
|
|
"fields": {
|
|
|
|
"my_field": [
|
|
|
|
"v1",
|
|
|
|
"v2"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
---------------
|
|
|
|
|
|
|
|
==== Timezone for date field
|
|
|
|
|
|
|
|
Specifying the `time_zone` parameter in queries or aggregations on fields of
|
|
|
|
type `date` must now be either an ISO 8601 UTC offset, or a timezone id. For
|
|
|
|
example, the value `+1:00` must now be written as `+01:00`.
|
|
|
|
|
|
|
|
==== Only highlight queried fields
|
|
|
|
|
|
|
|
The default value for the `require_field_match` option has changed from
|
|
|
|
`false` to `true`, meaning that the highlighters will, by default, only take
|
|
|
|
the fields that were queried into account.
|
|
|
|
|
|
|
|
This means that, when querying the `_all` field, trying to highlight on any
|
|
|
|
field other than `_all` will produce no highlighted snippets. Querying the
|
|
|
|
same fields that need to be highlighted is the cleaner solution to get
|
|
|
|
highlighted snippets back. Otherwise `require_field_match` option can be set
|
|
|
|
to `false` to ignore field names completely when highlighting.
|
|
|
|
|
|
|
|
The postings highlighter doesn't support the `require_field_match` option
|
|
|
|
anymore, it will only highlight fields that were queried.
|
|
|
|
|
|
|
|
==== Postings highlighter doesn't support `match_phrase_prefix`
|
|
|
|
|
|
|
|
The `match` query with type set to `phrase_prefix` (or the
|
|
|
|
`match_phrase_prefix` query) is not supported by the postings highlighter. No
|
|
|
|
highlighted snippets will be returned.
|
|
|
|
|
|
|
|
|
|
|
|
|