From cd88b7724e9d098d9d1a1b83a6c9bb688a0fd9ae Mon Sep 17 00:00:00 2001 From: Colin Goodheart-Smithe Date: Fri, 29 Jul 2016 09:03:45 +0100 Subject: [PATCH] Undeprecates `aggs` in the search request This change adds a second ParseField for the `aggs` field in the search request so both `aggregations` and `aggs` are undeprecated allowed fields in the search request Closes #19504 --- .../search/builder/SearchSourceBuilder.java | 8 +++-- .../builder/SearchSourceBuilderTests.java | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java b/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java index 1fc66cf45dd..d31c3d371d6 100644 --- a/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java @@ -91,7 +91,8 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ public static final ParseField SORT_FIELD = new ParseField("sort"); public static final ParseField TRACK_SCORES_FIELD = new ParseField("track_scores"); public static final ParseField INDICES_BOOST_FIELD = new ParseField("indices_boost"); - public static final ParseField AGGREGATIONS_FIELD = new ParseField("aggregations", "aggs"); + public static final ParseField AGGREGATIONS_FIELD = new ParseField("aggregations"); + public static final ParseField AGGS_FIELD = new ParseField("aggs"); public static final ParseField HIGHLIGHT_FIELD = new ParseField("highlight"); public static final ParseField SUGGEST_FIELD = new ParseField("suggest"); public static final ParseField RESCORE_FIELD = new ParseField("rescore"); @@ -998,7 +999,7 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ scriptFields.add(new ScriptField(context)); } } else if (context.getParseFieldMatcher().match(currentFieldName, INDICES_BOOST_FIELD)) { - indexBoost = new ObjectFloatHashMap(); + indexBoost = new ObjectFloatHashMap<>(); while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { if (token == XContentParser.Token.FIELD_NAME) { currentFieldName = parser.currentName(); @@ -1009,7 +1010,8 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ parser.getTokenLocation()); } } - } else if (context.getParseFieldMatcher().match(currentFieldName, AGGREGATIONS_FIELD)) { + } else if (context.getParseFieldMatcher().match(currentFieldName, AGGREGATIONS_FIELD) + || context.getParseFieldMatcher().match(currentFieldName, AGGS_FIELD)) { aggregations = aggParsers.parseAggregators(context); } else if (context.getParseFieldMatcher().match(currentFieldName, HIGHLIGHT_FIELD)) { highlightBuilder = HighlightBuilder.fromXContent(context); diff --git a/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java b/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java index 19a9b1c65f3..273d19a2659 100644 --- a/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java @@ -545,6 +545,41 @@ public class SearchSourceBuilderTests extends ESTestCase { } } + public void testAggsParsing() throws IOException { + { + String restContent = "{\n" + " " + + "\"aggs\": {" + + " \"test_agg\": {\n" + + " " + "\"terms\" : {\n" + + " \"field\": \"foo\"\n" + + " }\n" + + " }\n" + + " }\n" + + "}\n"; + try (XContentParser parser = XContentFactory.xContent(restContent).createParser(restContent)) { + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser), aggParsers, + suggesters); + assertEquals(1, searchSourceBuilder.aggregations().count()); + } + } + { + String restContent = "{\n" + + " \"aggregations\": {" + + " \"test_agg\": {\n" + + " \"terms\" : {\n" + + " \"field\": \"foo\"\n" + + " }\n" + + " }\n" + + " }\n" + + "}\n"; + try (XContentParser parser = XContentFactory.xContent(restContent).createParser(restContent)) { + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser), aggParsers, + suggesters); + assertEquals(1, searchSourceBuilder.aggregations().count()); + } + } + } + /** * test that we can parse the `rescore` element either as single object or as array */