diff --git a/core/src/main/java/org/elasticsearch/index/query/MatchQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MatchQueryBuilder.java index 64d025adf71..57bbdac1af8 100644 --- a/core/src/main/java/org/elasticsearch/index/query/MatchQueryBuilder.java +++ b/core/src/main/java/org/elasticsearch/index/query/MatchQueryBuilder.java @@ -603,6 +603,10 @@ public class MatchQueryBuilder extends AbstractQueryBuilder { } } } else { + if (fieldName != null) { + throw new ParsingException(parser.getTokenLocation(), "[match] 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/MatchQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/MatchQueryBuilderTests.java index a5cb2fc61c7..ea6fa65dddb 100644 --- a/core/src/test/java/org/elasticsearch/index/query/MatchQueryBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/MatchQueryBuilderTests.java @@ -421,5 +421,14 @@ public class MatchQueryBuilderTests extends AbstractQueryTestCase parseQuery(json)); assertEquals("[match] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage()); + + String shortJson = "{\n" + + " \"match\" : {\n" + + " \"message1\" : \"this is a test\",\n" + + " \"message2\" : \"this is a test\"\n" + + " }\n" + + "}"; + e = expectThrows(ParsingException.class, () -> parseQuery(shortJson)); + assertEquals("[match] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage()); } }