From 32f3a452a34850d0527f8c6e2f1a4c9ebd32703f Mon Sep 17 00:00:00 2001 From: Jim Ferenczi Date: Thu, 31 May 2018 17:50:33 +0200 Subject: [PATCH] Remove the ability to index or query context suggestions without context This is a follow up of #30712 that removes the ability to index or query and context enabled completion field without context. Relates #30712 --- .../migration/migrate_7_0/search.asciidoc | 7 ++++++ .../rest-api-spec/test/suggest/30_context.yml | 23 +++++-------------- .../test/suggest/40_typed_keys.yml | 15 +----------- .../completion/context/ContextMappings.java | 8 +++---- 4 files changed, 17 insertions(+), 36 deletions(-) diff --git a/docs/reference/migration/migrate_7_0/search.asciidoc b/docs/reference/migration/migrate_7_0/search.asciidoc index 7505b6f14d1b4..68e8c07f4eb77 100644 --- a/docs/reference/migration/migrate_7_0/search.asciidoc +++ b/docs/reference/migration/migrate_7_0/search.asciidoc @@ -81,3 +81,10 @@ for a particular index with the index setting `index.max_regex_length`. 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. + +==== 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. \ No newline at end of file diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/suggest/30_context.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/suggest/30_context.yml index dfb849fff5700..d1ec184a8226a 100644 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/suggest/30_context.yml +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/suggest/30_context.yml @@ -337,11 +337,10 @@ setup: - match: { suggest.result.0.options.0.text: "foo" } --- -"Indexing and Querying without contexts is deprecated": +"Indexing and Querying without contexts is forbidden": - skip: version: " - 6.99.99" - reason: this feature was deprecated in 7.0 - features: "warnings" + reason: this feature was removed in 7.0 - do: index: @@ -359,8 +358,7 @@ setup: color: "blue" - do: - warnings: - - "The ability to index a suggestion with no context on a context enabled completion field is deprecated and will be removed in the next major release." + catch: /Contexts are mandatory in context enabled completion field \[suggest_context\]/ index: index: test type: test @@ -373,8 +371,7 @@ setup: indices.refresh: {} - do: - warnings: - - "The ability to query with no context on a context enabled completion field is deprecated and will be removed in the next major release." + catch: /Missing mandatory contexts in context query/ search: body: suggest: @@ -383,11 +380,8 @@ setup: completion: field: suggest_context - - length: { suggest.result: 1 } - - do: - warnings: - - "The ability to query with no context on a context enabled completion field is deprecated and will be removed in the next major release." + catch: /Missing mandatory contexts in context query/ search: body: suggest: @@ -397,11 +391,8 @@ setup: field: suggest_context contexts: {} - - length: { suggest.result: 1 } - - do: - warnings: - - "The ability to query with no context on a context enabled completion field is deprecated and will be removed in the next major release." + catch: /Missing mandatory contexts in context query/ search: body: suggest: @@ -411,5 +402,3 @@ setup: field: suggest_multi_contexts contexts: location: [] - - - length: { suggest.result: 1 } diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/suggest/40_typed_keys.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/suggest/40_typed_keys.yml index 604be9ec99e00..44cd6d589c26a 100644 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/suggest/40_typed_keys.yml +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/suggest/40_typed_keys.yml @@ -19,8 +19,6 @@ setup: "type" : "category" - do: - warnings: - - "The ability to index a suggestion with no context on a context enabled completion field is deprecated and will be removed in the next major release." bulk: refresh: true index: test @@ -29,18 +27,12 @@ setup: - '{"index": {}}' - '{"title": "Elasticsearch in Action", "suggestions": {"input": "ELK in Action", "contexts": {"format": "ebook"}}}' - '{"index": {}}' - - '{"title": "Elasticsearch - The Definitive Guide", "suggestions": {"input": ["Elasticsearch in Action"]}}' + - '{"title": "Elasticsearch - The Definitive Guide", "suggestions": {"input": ["Elasticsearch in Action"], "contexts": {"format": "ebook"}}}' --- "Test typed keys parameter for suggesters": - - skip: - version: " - 6.99.99" - reason: queying a context suggester with no context was deprecated in 7.0 - features: "warnings" - do: - warnings: - - "The ability to query with no context on a context enabled completion field is deprecated and will be removed in the next major release." search: typed_keys: true body: @@ -51,10 +43,6 @@ setup: term_suggester: term: field: title - completion_suggester: - prefix: "Elastic" - completion: - field: suggestions context_suggester: prefix: "Elastic" completion: @@ -66,6 +54,5 @@ setup: field: title - is_true: suggest.term#term_suggester - - is_true: suggest.completion#completion_suggester - is_true: suggest.completion#context_suggester - is_true: suggest.phrase#phrase_suggester diff --git a/server/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMappings.java b/server/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMappings.java index 4d6b53296f157..6235eb9eecf6d 100644 --- a/server/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMappings.java +++ b/server/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMappings.java @@ -124,7 +124,7 @@ private class TypedContextField extends ContextSuggestField { private final ParseContext.Document document; TypedContextField(String name, String value, int weight, Map> contexts, - ParseContext.Document document) { + ParseContext.Document document) { super(name, value, weight); this.contexts = contexts; this.document = document; @@ -150,8 +150,7 @@ protected Iterable contexts() { } } if (typedContexts.isEmpty()) { - DEPRECATION_LOGGER.deprecated("The ability to index a suggestion with no context on a context enabled completion field" + - " is deprecated and will be removed in the next major release."); + throw new IllegalArgumentException("Contexts are mandatory in context enabled completion field [" + name + "]"); } return typedContexts; } @@ -186,8 +185,7 @@ public ContextQuery toContextQuery(CompletionQuery query, Map