summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjavanna <cavannaluca@gmail.com>2016-08-08 19:41:45 +0200
committerLuca Cavanna <cavannaluca@gmail.com>2016-08-08 19:41:45 +0200
commitcb41f304f29ff6270d8204f20eb7724e93ee015f (patch)
tree5d67786284c40901f29a4402a7bf0379cef478d0
parent5d238e86f6c83df2661997ffb508a22d7c5ab22c (diff)
Throw parsing error if match phrase prefix query contains multiple fields in its short version
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilder.java4
-rw-r--r--core/src/test/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilderTests.java9
2 files changed, 13 insertions, 0 deletions
diff --git a/core/src/main/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilder.java
index ecce9e66b1..ef8f860a28 100644
--- a/core/src/main/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilder.java
@@ -238,6 +238,10 @@ public class MatchPhrasePrefixQueryBuilder extends AbstractQueryBuilder<MatchPhr
}
}
} else {
+ if (fieldName != null) {
+ throw new ParsingException(parser.getTokenLocation(), "[match_phrase_prefix] query doesn't support multiple " +
+ "fields, found [" + fieldName + "] and [" + parser.currentName() + "]");
+ }
fieldName = parser.currentName();
value = parser.objectText();
}
diff --git a/core/src/test/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilderTests.java
index c6dae00b89..9162a1013d 100644
--- a/core/src/test/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilderTests.java
@@ -171,5 +171,14 @@ public class MatchPhrasePrefixQueryBuilderTests extends AbstractQueryTestCase<Ma
"}";
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
assertEquals("[match_phrase_prefix] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
+
+ String shortJson = "{\n" +
+ " \"match_phrase_prefix\" : {\n" +
+ " \"message1\" : \"this is a test\",\n" +
+ " \"message2\" : \"this is a test\"\n" +
+ " }\n" +
+ "}";
+ e = expectThrows(ParsingException.class, () -> parseQuery(shortJson));
+ assertEquals("[match_phrase_prefix] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
}
}