From 7d8149cb8633b56b320094ad2f4d9a71a2e8a06c Mon Sep 17 00:00:00 2001 From: Ali Beyad Date: Mon, 29 Feb 2016 12:37:11 -0500 Subject: [PATCH] Suggester refactoring requires a Suggester to parse X-Content to Builder As part of the search refactoring effort, we need to pass a Suggester to the methods that parse X-Content to a SuggestBuilder in every instance where we are parsing search/suggest requests. Original commit: elastic/x-pack-elasticsearch@7f815c617a736feaa6d7f53333ba3fd2c4dd741f --- .../org/elasticsearch/messy/tests/SearchInputIT.java | 3 ++- .../elasticsearch/messy/tests/SearchTransformIT.java | 3 +-- .../SearchGetAndSuggestPermissionsTests.java | 4 ++-- .../watcher/input/search/SearchInput.java | 7 +++++-- .../watcher/input/search/SearchInputFactory.java | 11 +++++++---- .../elasticsearch/watcher/support/WatcherUtils.java | 5 +++-- .../watcher/transform/search/SearchTransform.java | 7 +++++-- .../transform/search/SearchTransformFactory.java | 11 +++++++---- .../watcher/support/WatcherUtilsTests.java | 4 ++-- .../org/elasticsearch/watcher/watch/WatchTests.java | 4 ++-- 10 files changed, 36 insertions(+), 23 deletions(-) diff --git a/elasticsearch/qa/messy-test-xpack-with-mustache/src/test/java/org/elasticsearch/messy/tests/SearchInputIT.java b/elasticsearch/qa/messy-test-xpack-with-mustache/src/test/java/org/elasticsearch/messy/tests/SearchInputIT.java index 4129f3a1c31..00eaab9546a 100644 --- a/elasticsearch/qa/messy-test-xpack-with-mustache/src/test/java/org/elasticsearch/messy/tests/SearchInputIT.java +++ b/elasticsearch/qa/messy-test-xpack-with-mustache/src/test/java/org/elasticsearch/messy/tests/SearchInputIT.java @@ -281,7 +281,8 @@ public class SearchInputIT extends ESIntegTestCase { parser.nextToken(); IndicesQueriesRegistry indicesQueryRegistry = internalCluster().getInstance(IndicesQueriesRegistry.class); - SearchInputFactory factory = new SearchInputFactory(Settings.EMPTY, WatcherClientProxy.of(client()), indicesQueryRegistry, null); + SearchInputFactory factory = new SearchInputFactory(Settings.EMPTY, WatcherClientProxy.of(client()), indicesQueryRegistry, + null, null); SearchInput searchInput = factory.parseInput("_id", parser); assertEquals(SearchInput.TYPE, searchInput.type()); diff --git a/elasticsearch/qa/messy-test-xpack-with-mustache/src/test/java/org/elasticsearch/messy/tests/SearchTransformIT.java b/elasticsearch/qa/messy-test-xpack-with-mustache/src/test/java/org/elasticsearch/messy/tests/SearchTransformIT.java index df2bfd00382..87bc114cc88 100644 --- a/elasticsearch/qa/messy-test-xpack-with-mustache/src/test/java/org/elasticsearch/messy/tests/SearchTransformIT.java +++ b/elasticsearch/qa/messy-test-xpack-with-mustache/src/test/java/org/elasticsearch/messy/tests/SearchTransformIT.java @@ -319,8 +319,7 @@ public class SearchTransformIT extends ESIntegTestCase { IndicesQueriesRegistry indicesQueryRegistry = internalCluster().getInstance(IndicesQueriesRegistry.class); SearchTransformFactory transformFactory = new SearchTransformFactory(Settings.EMPTY, WatcherClientProxy.of(client()), - indicesQueryRegistry, - null); + indicesQueryRegistry, null, null); ExecutableSearchTransform executable = transformFactory.parseExecutable("_id", parser); assertThat(executable, notNullValue()); diff --git a/elasticsearch/x-pack/shield/src/test/java/org/elasticsearch/integration/SearchGetAndSuggestPermissionsTests.java b/elasticsearch/x-pack/shield/src/test/java/org/elasticsearch/integration/SearchGetAndSuggestPermissionsTests.java index 9e3c4604a93..796aab3c3cb 100644 --- a/elasticsearch/x-pack/shield/src/test/java/org/elasticsearch/integration/SearchGetAndSuggestPermissionsTests.java +++ b/elasticsearch/x-pack/shield/src/test/java/org/elasticsearch/integration/SearchGetAndSuggestPermissionsTests.java @@ -83,14 +83,14 @@ public class SearchGetAndSuggestPermissionsTests extends ShieldIntegTestCase { Map headers = singletonMap(UsernamePasswordToken.BASIC_AUTH_HEADER, userHeader("suggest_user", "passwd")); SuggestResponse suggestResponse = client.filterWithHeader(headers) .prepareSuggest("a") - .addSuggestion(SuggestBuilders.termSuggestion("name").field("name").text("val")).get(); + .addSuggestion(randomAsciiOfLengthBetween(3,7), SuggestBuilders.termSuggestion("name").text("val")).get(); assertNoFailures(suggestResponse); assertThat(suggestResponse.getSuggest().size(), is(1)); suggestResponse = client .filterWithHeader(singletonMap(UsernamePasswordToken.BASIC_AUTH_HEADER, userHeader("search_user", "passwd"))) .prepareSuggest("a") - .addSuggestion(SuggestBuilders.termSuggestion("name").field("name").text("val")).get(); + .addSuggestion(randomAsciiOfLengthBetween(3, 7), SuggestBuilders.termSuggestion("name").text("val")).get(); assertNoFailures(suggestResponse); assertThat(suggestResponse.getSuggest().size(), is(1)); diff --git a/elasticsearch/x-pack/watcher/src/main/java/org/elasticsearch/watcher/input/search/SearchInput.java b/elasticsearch/x-pack/watcher/src/main/java/org/elasticsearch/watcher/input/search/SearchInput.java index 4b387f92c20..fbc247eaba1 100644 --- a/elasticsearch/x-pack/watcher/src/main/java/org/elasticsearch/watcher/input/search/SearchInput.java +++ b/elasticsearch/x-pack/watcher/src/main/java/org/elasticsearch/watcher/input/search/SearchInput.java @@ -15,6 +15,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AggregatorParsers; +import org.elasticsearch.search.suggest.Suggesters; import org.elasticsearch.watcher.input.Input; import org.elasticsearch.watcher.support.SearchRequestEquivalence; import org.elasticsearch.watcher.support.WatcherDateTimeUtils; @@ -111,7 +112,8 @@ public class SearchInput implements Input { return builder; } - public static SearchInput parse(String watchId, XContentParser parser, QueryParseContext context, AggregatorParsers aggParsers) + public static SearchInput parse(String watchId, XContentParser parser, QueryParseContext context, + AggregatorParsers aggParsers, Suggesters suggesters) throws IOException { SearchRequest request = null; Set extract = null; @@ -125,7 +127,8 @@ public class SearchInput implements Input { currentFieldName = parser.currentName(); } else if (ParseFieldMatcher.STRICT.match(currentFieldName, Field.REQUEST)) { try { - request = WatcherUtils.readSearchRequest(parser, ExecutableSearchInput.DEFAULT_SEARCH_TYPE, context, aggParsers); + request = WatcherUtils.readSearchRequest(parser, ExecutableSearchInput.DEFAULT_SEARCH_TYPE, context, + aggParsers, suggesters); } catch (ElasticsearchParseException srpe) { throw new ElasticsearchParseException("could not parse [{}] input for watch [{}]. failed to parse [{}]", srpe, TYPE, watchId, currentFieldName); diff --git a/elasticsearch/x-pack/watcher/src/main/java/org/elasticsearch/watcher/input/search/SearchInputFactory.java b/elasticsearch/x-pack/watcher/src/main/java/org/elasticsearch/watcher/input/search/SearchInputFactory.java index 531103ebe11..ca8f6003ffd 100644 --- a/elasticsearch/x-pack/watcher/src/main/java/org/elasticsearch/watcher/input/search/SearchInputFactory.java +++ b/elasticsearch/x-pack/watcher/src/main/java/org/elasticsearch/watcher/input/search/SearchInputFactory.java @@ -13,6 +13,7 @@ import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.indices.query.IndicesQueriesRegistry; import org.elasticsearch.search.aggregations.AggregatorParsers; +import org.elasticsearch.search.suggest.Suggesters; import org.elasticsearch.watcher.input.InputFactory; import org.elasticsearch.watcher.input.simple.ExecutableSimpleInput; import org.elasticsearch.watcher.support.init.proxy.WatcherClientProxy; @@ -26,16 +27,18 @@ public class SearchInputFactory extends InputFactory