2017-09-07 11:25:05 -04:00
|
|
|
[[breaking_70_search_changes]]
|
2017-10-11 09:31:48 -04:00
|
|
|
=== Search and Query DSL changes
|
|
|
|
|
|
|
|
==== Changes to queries
|
|
|
|
* The default value for `transpositions` parameter of `fuzzy` query
|
|
|
|
has been changed to `true`.
|
2017-09-07 11:25:05 -04:00
|
|
|
|
2018-03-22 13:37:08 -04:00
|
|
|
* The `query_string` options `use_dismax`, `split_on_whitespace`,
|
|
|
|
`all_fields`, `locale`, `auto_generate_phrase_query` and
|
|
|
|
`lowercase_expanded_terms` deprecated in 6.x have been removed.
|
|
|
|
|
2018-04-10 08:31:06 -04:00
|
|
|
* Purely negative queries (only MUST_NOT clauses) now return a score of `0`
|
|
|
|
rather than `1`.
|
|
|
|
|
2018-05-24 14:46:15 -04:00
|
|
|
* The boundary specified using geohashes in the `geo_bounding_box` query
|
|
|
|
now include entire geohash cell, instead of just geohash center.
|
|
|
|
|
2018-06-04 14:12:45 -04:00
|
|
|
* Attempts to generate multi-term phrase queries against non-text fields
|
|
|
|
with a custom analyzer will now throw an exception
|
|
|
|
|
2017-09-07 11:25:05 -04:00
|
|
|
==== Adaptive replica selection enabled by default
|
|
|
|
|
|
|
|
Adaptive replica selection has been enabled by default. If you wish to return to
|
|
|
|
the older round robin of search requests, you can use the
|
|
|
|
`cluster.routing.use_adaptive_replica_selection` setting:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
PUT /_cluster/settings
|
|
|
|
{
|
|
|
|
"transient": {
|
|
|
|
"cluster.routing.use_adaptive_replica_selection": false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
|
|
|
|
2017-10-31 07:36:00 -04:00
|
|
|
==== Search API returns `400` for invalid requests
|
2017-10-31 07:17:27 -04:00
|
|
|
|
2017-10-31 07:36:00 -04:00
|
|
|
The Search API returns `400 - Bad request` while it would previously return
|
|
|
|
`500 - Internal Server Error` in the following cases of invalid request:
|
|
|
|
|
|
|
|
* the result window is too large
|
|
|
|
* sort is used in combination with rescore
|
|
|
|
* the rescore window is too large
|
|
|
|
* the number of slices is too large
|
|
|
|
* keep alive for scroll is too large
|
|
|
|
* number of filters in the adjacency matrix aggregation is too large
|
2018-05-30 08:00:07 -04:00
|
|
|
* script compilation errors
|
2017-11-10 10:02:06 -05:00
|
|
|
|
2017-12-11 07:16:04 -05:00
|
|
|
==== Scroll queries cannot use the `request_cache` anymore
|
2017-11-10 10:02:06 -05:00
|
|
|
|
2017-12-11 07:16:04 -05:00
|
|
|
Setting `request_cache:true` on a query that creates a scroll (`scroll=1m`)
|
2017-11-10 10:02:06 -05:00
|
|
|
has been deprecated in 6 and will now return a `400 - Bad request`.
|
|
|
|
Scroll queries are not meant to be cached.
|
2017-12-11 07:16:04 -05:00
|
|
|
|
2018-08-28 15:48:23 -04:00
|
|
|
==== Scroll queries cannot use `rescore` anymore
|
|
|
|
Including a rescore clause on a query that creates a scroll (`scroll=1m`) has
|
|
|
|
been deprecated in 6.5 and will now return a `400 - Bad request`. Allowing
|
|
|
|
rescore on scroll queries would break the scroll sort. In the 6.x line, the
|
|
|
|
rescore clause was silently ignored (for scroll queries), and it was allowed in
|
|
|
|
the 5.x line.
|
|
|
|
|
2017-12-11 07:16:04 -05:00
|
|
|
==== Term Suggesters supported distance algorithms
|
|
|
|
|
|
|
|
The following string distance algorithms were given additional names in 6.2 and
|
|
|
|
their existing names were deprecated. The deprecated names have now been
|
|
|
|
removed.
|
|
|
|
|
|
|
|
* `levenstein` - replaced by `levenshtein`
|
|
|
|
* `jarowinkler` - replaced by `jaro_winkler`
|
2017-12-28 17:36:29 -05:00
|
|
|
|
|
|
|
|
|
|
|
==== Limiting the number of terms that can be used in a Terms Query request
|
|
|
|
|
|
|
|
Executing a Terms Query with a lot of terms may degrade the cluster performance,
|
|
|
|
as each additional term demands extra processing and memory.
|
|
|
|
To safeguard against this, the maximum number of terms that can be used in a
|
|
|
|
Terms Query request has been limited to 65536. This default maximum can be changed
|
|
|
|
for a particular index with the index setting `index.max_terms_count`.
|
2018-02-23 13:41:24 -05:00
|
|
|
|
|
|
|
|
|
|
|
==== Limiting the length of regex that can be used in a Regexp Query request
|
|
|
|
|
|
|
|
Executing a Regexp Query with a long regex string may degrade search performance.
|
|
|
|
To safeguard against this, the maximum length of regex that can be used in a
|
|
|
|
Regexp Query request has been limited to 1000. This default maximum can be changed
|
|
|
|
for a particular index with the index setting `index.max_regex_length`.
|
2018-04-11 07:10:22 -04:00
|
|
|
|
|
|
|
==== Invalid `_search` request body
|
|
|
|
|
|
|
|
Search requests with extra content after the main object will no longer be accepted
|
|
|
|
by the `_search` endpoint. A parsing exception will be thrown instead.
|
2018-06-11 02:49:18 -04:00
|
|
|
|
2018-07-09 10:01:01 -04:00
|
|
|
==== Context Completion Suggester
|
|
|
|
|
|
|
|
The ability to query and index context enabled suggestions without context,
|
|
|
|
deprecated in 6.x, has been removed. Context enabled suggestion queries
|
|
|
|
without contexts have to visit every suggestion, which degrades the search performance
|
|
|
|
considerably.
|
|
|
|
|
2018-08-17 11:13:16 -04:00
|
|
|
For geo context the value of the `path` parameter is now validated against the mapping,
|
|
|
|
and the context is only accepted if `path` points to a field with `geo_point` type.
|
|
|
|
|
2018-06-11 02:49:18 -04:00
|
|
|
==== Semantics changed for `max_concurrent_shard_requests`
|
|
|
|
|
|
|
|
`max_concurrent_shard_requests` used to limit the total number of concurrent shard
|
|
|
|
requests a single high level search request can execute. In 7.0 this changed to be the
|
|
|
|
max number of concurrent shard requests per node. The default is now `5`.
|
2018-08-22 11:23:54 -04:00
|
|
|
|
|
|
|
==== `max_score` set to `null` when scores are not tracked
|
|
|
|
|
|
|
|
`max_score` used to be set to `0` whenever scores are not tracked. `null` is now used
|
|
|
|
instead which is a more appropriate value for a scenario where scores are not available.
|