Merge pull request #19871 from javanna/fix/short_query_multiple_fields
Throw exception when multiple field names are provided as part of query short syntax
This commit is contained in:
commit
af5fbcddfc
|
@ -26,10 +26,12 @@ import org.apache.lucene.search.spans.SpanQuery;
|
||||||
import org.apache.lucene.util.BytesRef;
|
import org.apache.lucene.util.BytesRef;
|
||||||
import org.elasticsearch.action.support.ToXContentToBytes;
|
import org.elasticsearch.action.support.ToXContentToBytes;
|
||||||
import org.elasticsearch.common.ParseField;
|
import org.elasticsearch.common.ParseField;
|
||||||
|
import org.elasticsearch.common.ParsingException;
|
||||||
import org.elasticsearch.common.io.stream.StreamInput;
|
import org.elasticsearch.common.io.stream.StreamInput;
|
||||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||||
import org.elasticsearch.common.lucene.BytesRefs;
|
import org.elasticsearch.common.lucene.BytesRefs;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
|
import org.elasticsearch.common.xcontent.XContentLocation;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -290,4 +292,12 @@ public abstract class AbstractQueryBuilder<QB extends AbstractQueryBuilder<QB>>
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static void throwParsingExceptionOnMultipleFields(String queryName, XContentLocation contentLocation,
|
||||||
|
String processedFieldName, String currentFieldName) {
|
||||||
|
if (processedFieldName != null) {
|
||||||
|
throw new ParsingException(contentLocation, "[" + queryName + "] query doesn't support multiple fields, found ["
|
||||||
|
+ processedFieldName + "] and [" + currentFieldName + "]");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -285,10 +285,7 @@ public class CommonTermsQueryBuilder extends AbstractQueryBuilder<CommonTermsQue
|
||||||
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
||||||
// skip
|
// skip
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[common] query doesn't support multiple fields, found ["
|
|
||||||
+ fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
@ -345,6 +342,7 @@ public class CommonTermsQueryBuilder extends AbstractQueryBuilder<CommonTermsQue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
|
||||||
fieldName = parser.currentName();
|
fieldName = parser.currentName();
|
||||||
text = parser.objectText();
|
text = parser.objectText();
|
||||||
}
|
}
|
||||||
|
|
|
@ -275,10 +275,7 @@ public class FuzzyQueryBuilder extends AbstractQueryBuilder<FuzzyQueryBuilder> i
|
||||||
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
||||||
// skip
|
// skip
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[fuzzy] query doesn't support multiple fields, found ["
|
|
||||||
+ fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
@ -309,6 +306,7 @@ public class FuzzyQueryBuilder extends AbstractQueryBuilder<FuzzyQueryBuilder> i
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
|
||||||
fieldName = parser.currentName();
|
fieldName = parser.currentName();
|
||||||
value = parser.objectBytes();
|
value = parser.objectBytes();
|
||||||
}
|
}
|
||||||
|
|
|
@ -359,10 +359,7 @@ public class GeoDistanceQueryBuilder extends AbstractQueryBuilder<GeoDistanceQue
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
GeoUtils.parseGeoPoint(parser, point);
|
GeoUtils.parseGeoPoint(parser, point);
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[geo_distance] query doesn't support multiple fields, found ["
|
|
||||||
+ fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
// the json in the format of -> field : { lat : 30, lon : 12 }
|
// the json in the format of -> field : { lat : 30, lon : 12 }
|
||||||
String currentName = parser.currentName();
|
String currentName = parser.currentName();
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
|
|
|
@ -207,10 +207,7 @@ public class MatchPhrasePrefixQueryBuilder extends AbstractQueryBuilder<MatchPhr
|
||||||
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
||||||
// skip
|
// skip
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[match_phrase_prefix] query doesn't support multiple " +
|
|
||||||
"fields, found [" + fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
@ -238,6 +235,7 @@ public class MatchPhrasePrefixQueryBuilder extends AbstractQueryBuilder<MatchPhr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
|
||||||
fieldName = parser.currentName();
|
fieldName = parser.currentName();
|
||||||
value = parser.objectText();
|
value = parser.objectText();
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,10 +178,7 @@ public class MatchPhraseQueryBuilder extends AbstractQueryBuilder<MatchPhraseQue
|
||||||
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
||||||
// skip
|
// skip
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[match_phrase] query doesn't support multiple fields, found ["
|
|
||||||
+ fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
@ -207,6 +204,7 @@ public class MatchPhraseQueryBuilder extends AbstractQueryBuilder<MatchPhraseQue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
|
||||||
fieldName = parser.currentName();
|
fieldName = parser.currentName();
|
||||||
value = parser.objectText();
|
value = parser.objectText();
|
||||||
}
|
}
|
||||||
|
|
|
@ -535,10 +535,7 @@ public class MatchQueryBuilder extends AbstractQueryBuilder<MatchQueryBuilder> {
|
||||||
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
||||||
// skip
|
// skip
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[match] query doesn't support multiple fields, found ["
|
|
||||||
+ fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
@ -603,6 +600,7 @@ public class MatchQueryBuilder extends AbstractQueryBuilder<MatchQueryBuilder> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
|
||||||
fieldName = parser.currentName();
|
fieldName = parser.currentName();
|
||||||
value = parser.objectText();
|
value = parser.objectText();
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,10 +134,7 @@ public class PrefixQueryBuilder extends AbstractQueryBuilder<PrefixQueryBuilder>
|
||||||
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
||||||
// skip
|
// skip
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[prefix] query doesn't support multiple fields, found ["
|
|
||||||
+ fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
@ -158,6 +155,7 @@ public class PrefixQueryBuilder extends AbstractQueryBuilder<PrefixQueryBuilder>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
value = parser.textOrNull();
|
value = parser.textOrNull();
|
||||||
}
|
}
|
||||||
|
|
|
@ -318,10 +318,7 @@ public class RangeQueryBuilder extends AbstractQueryBuilder<RangeQueryBuilder> i
|
||||||
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
||||||
// skip
|
// skip
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[range] query doesn't support multiple fields, found ["
|
|
||||||
+ fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
|
|
@ -195,10 +195,7 @@ public class RegexpQueryBuilder extends AbstractQueryBuilder<RegexpQueryBuilder>
|
||||||
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
||||||
// skip
|
// skip
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[regexp] query doesn't support multiple fields, found ["
|
|
||||||
+ fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
@ -229,6 +226,7 @@ public class RegexpQueryBuilder extends AbstractQueryBuilder<RegexpQueryBuilder>
|
||||||
if (parseContext.getParseFieldMatcher().match(currentFieldName, NAME_FIELD)) {
|
if (parseContext.getParseFieldMatcher().match(currentFieldName, NAME_FIELD)) {
|
||||||
queryName = parser.text();
|
queryName = parser.text();
|
||||||
} else {
|
} else {
|
||||||
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
value = parser.textOrNull();
|
value = parser.textOrNull();
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,10 +104,7 @@ public class SpanTermQueryBuilder extends BaseTermQueryBuilder<SpanTermQueryBuil
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
currentFieldName = parser.currentName();
|
currentFieldName = parser.currentName();
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[span_term] query doesn't support multiple fields, found ["
|
|
||||||
+ fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
@ -128,6 +125,7 @@ public class SpanTermQueryBuilder extends BaseTermQueryBuilder<SpanTermQueryBuil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
|
||||||
fieldName = parser.currentName();
|
fieldName = parser.currentName();
|
||||||
value = parser.objectBytes();
|
value = parser.objectBytes();
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,11 +98,7 @@ public class TermQueryBuilder extends BaseTermQueryBuilder<TermQueryBuilder> {
|
||||||
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
||||||
// skip
|
// skip
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
// also support a format of "term" : {"field_name" : { ... }}
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
if (fieldName != null) {
|
|
||||||
throw new ParsingException(parser.getTokenLocation(),
|
|
||||||
"[term] query does not support different field names, use [bool] query instead");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
@ -123,10 +119,7 @@ public class TermQueryBuilder extends BaseTermQueryBuilder<TermQueryBuilder> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (token.isValue()) {
|
} else if (token.isValue()) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
|
||||||
throw new ParsingException(parser.getTokenLocation(),
|
|
||||||
"[term] query does not support different field names, use [bool] query instead");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
value = parser.objectBytes();
|
value = parser.objectBytes();
|
||||||
} else if (token == XContentParser.Token.START_ARRAY) {
|
} else if (token == XContentParser.Token.START_ARRAY) {
|
||||||
|
|
|
@ -148,10 +148,7 @@ public class WildcardQueryBuilder extends AbstractQueryBuilder<WildcardQueryBuil
|
||||||
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
} else if (parseContext.isDeprecatedSetting(currentFieldName)) {
|
||||||
// skip
|
// skip
|
||||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||||
if (fieldName != null) {
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
|
||||||
throw new ParsingException(parser.getTokenLocation(), "[wildcard] query doesn't support multiple fields, found ["
|
|
||||||
+ fieldName + "] and [" + currentFieldName + "]");
|
|
||||||
}
|
|
||||||
fieldName = currentFieldName;
|
fieldName = currentFieldName;
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
if (token == XContentParser.Token.FIELD_NAME) {
|
if (token == XContentParser.Token.FIELD_NAME) {
|
||||||
|
@ -174,6 +171,7 @@ public class WildcardQueryBuilder extends AbstractQueryBuilder<WildcardQueryBuil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
|
||||||
fieldName = parser.currentName();
|
fieldName = parser.currentName();
|
||||||
value = parser.text();
|
value = parser.text();
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,5 +194,14 @@ public class CommonTermsQueryBuilderTests extends AbstractQueryTestCase<CommonTe
|
||||||
|
|
||||||
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
||||||
assertEquals("[common] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
assertEquals("[common] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
||||||
|
|
||||||
|
String shortJson = "{\n" +
|
||||||
|
" \"common\" : {\n" +
|
||||||
|
" \"message1\" : \"nelly the elephant not as a cartoon\",\n" +
|
||||||
|
" \"message2\" : \"nelly the elephant not as a cartoon\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
e = expectThrows(ParsingException.class, () -> parseQuery(shortJson));
|
||||||
|
assertEquals("[common] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,5 +169,15 @@ public class FuzzyQueryBuilderTests extends AbstractQueryTestCase<FuzzyQueryBuil
|
||||||
|
|
||||||
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
||||||
assertEquals("[fuzzy] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
assertEquals("[fuzzy] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
||||||
|
|
||||||
|
String shortJson = "{\n" +
|
||||||
|
" \"fuzzy\" : {\n" +
|
||||||
|
" \"message1\" : \"this is a test\",\n" +
|
||||||
|
" \"message2\" : \"value\" : \"this is a test\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
|
||||||
|
e = expectThrows(ParsingException.class, () -> parseQuery(shortJson));
|
||||||
|
assertEquals("[fuzzy] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,5 +171,14 @@ public class MatchPhrasePrefixQueryBuilderTests extends AbstractQueryTestCase<Ma
|
||||||
"}";
|
"}";
|
||||||
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
||||||
assertEquals("[match_phrase_prefix] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,5 +138,14 @@ public class MatchPhraseQueryBuilderTests extends AbstractQueryTestCase<MatchPhr
|
||||||
"}";
|
"}";
|
||||||
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
||||||
assertEquals("[match_phrase] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
assertEquals("[match_phrase] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
||||||
|
|
||||||
|
String shortJson = "{\n" +
|
||||||
|
" \"match_phrase\" : {\n" +
|
||||||
|
" \"message1\" : \"this is a test\",\n" +
|
||||||
|
" \"message2\" : \"this is a test\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
e = expectThrows(ParsingException.class, () -> parseQuery(shortJson));
|
||||||
|
assertEquals("[match_phrase] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -421,5 +421,14 @@ public class MatchQueryBuilderTests extends AbstractQueryTestCase<MatchQueryBuil
|
||||||
"}";
|
"}";
|
||||||
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
||||||
assertEquals("[match] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,5 +127,15 @@ public class PrefixQueryBuilderTests extends AbstractQueryTestCase<PrefixQueryBu
|
||||||
"}";
|
"}";
|
||||||
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
||||||
assertEquals("[prefix] query doesn't support multiple fields, found [user1] and [user2]", e.getMessage());
|
assertEquals("[prefix] query doesn't support multiple fields, found [user1] and [user2]", e.getMessage());
|
||||||
|
|
||||||
|
String shortJson =
|
||||||
|
"{\n" +
|
||||||
|
" \"prefix\": {\n" +
|
||||||
|
" \"user1\": \"ki\",\n" +
|
||||||
|
" \"user2\": \"ki\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
e = expectThrows(ParsingException.class, () -> parseQuery(shortJson));
|
||||||
|
assertEquals("[prefix] query doesn't support multiple fields, found [user1] and [user2]", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,5 +135,15 @@ public class RegexpQueryBuilderTests extends AbstractQueryTestCase<RegexpQueryBu
|
||||||
"}";
|
"}";
|
||||||
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
||||||
assertEquals("[regexp] query doesn't support multiple fields, found [user1] and [user2]", e.getMessage());
|
assertEquals("[regexp] query doesn't support multiple fields, found [user1] and [user2]", e.getMessage());
|
||||||
|
|
||||||
|
String shortJson =
|
||||||
|
"{\n" +
|
||||||
|
" \"regexp\": {\n" +
|
||||||
|
" \"user1\": \"k.*y\",\n" +
|
||||||
|
" \"user2\": \"k.*y\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
e = expectThrows(ParsingException.class, () -> parseQuery(shortJson));
|
||||||
|
assertEquals("[regexp] query doesn't support multiple fields, found [user1] and [user2]", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,6 +120,15 @@ public class SpanTermQueryBuilderTests extends AbstractTermQueryTestCase<SpanTer
|
||||||
"}";
|
"}";
|
||||||
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
||||||
assertEquals("[span_term] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
assertEquals("[span_term] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
||||||
|
|
||||||
|
String shortJson = "{\n" +
|
||||||
|
" \"span_term\" : {\n" +
|
||||||
|
" \"message1\" : \"this\",\n" +
|
||||||
|
" \"message2\" : \"this\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
e = expectThrows(ParsingException.class, () -> parseQuery(shortJson));
|
||||||
|
assertEquals("[span_term] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,6 +154,15 @@ public class TermQueryBuilderTests extends AbstractTermQueryTestCase<TermQueryBu
|
||||||
" }\n" +
|
" }\n" +
|
||||||
"}";
|
"}";
|
||||||
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
||||||
assertEquals("[term] query does not support different field names, use [bool] query instead", e.getMessage());
|
assertEquals("[term] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
||||||
|
|
||||||
|
String shortJson = "{\n" +
|
||||||
|
" \"term\" : {\n" +
|
||||||
|
" \"message1\" : \"this\",\n" +
|
||||||
|
" \"message2\" : \"this\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
e = expectThrows(ParsingException.class, () -> parseQuery(shortJson));
|
||||||
|
assertEquals("[term] query doesn't support multiple fields, found [message1] and [message2]", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,5 +113,15 @@ public class WildcardQueryBuilderTests extends AbstractQueryTestCase<WildcardQue
|
||||||
"}";
|
"}";
|
||||||
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
ParsingException e = expectThrows(ParsingException.class, () -> parseQuery(json));
|
||||||
assertEquals("[wildcard] query doesn't support multiple fields, found [user1] and [user2]", e.getMessage());
|
assertEquals("[wildcard] query doesn't support multiple fields, found [user1] and [user2]", e.getMessage());
|
||||||
|
|
||||||
|
String shortJson =
|
||||||
|
"{\n" +
|
||||||
|
" \"wildcard\": {\n" +
|
||||||
|
" \"user1\": \"ki*y\",\n" +
|
||||||
|
" \"user2\": \"ki*y\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
e = expectThrows(ParsingException.class, () -> parseQuery(shortJson));
|
||||||
|
assertEquals("[wildcard] query doesn't support multiple fields, found [user1] and [user2]", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue