diff --git a/core/src/main/java/org/elasticsearch/action/get/MultiGetRequest.java b/core/src/main/java/org/elasticsearch/action/get/MultiGetRequest.java index d4627391b11..20a619cec2c 100644 --- a/core/src/main/java/org/elasticsearch/action/get/MultiGetRequest.java +++ b/core/src/main/java/org/elasticsearch/action/get/MultiGetRequest.java @@ -44,6 +44,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Locale; public class MultiGetRequest extends ActionRequest implements Iterable, CompositeIndicesRequest, RealtimeRequest { @@ -319,6 +320,14 @@ public class MultiGetRequest extends ActionRequest implements Iterable { + final String defaultIndex = randomAsciiOfLength(5); + final String defaultType = randomAsciiOfLength(3); + final FetchSourceContext fetchSource = FetchSourceContext.FETCH_SOURCE; + mgr.add(defaultIndex, defaultType, null, fetchSource, null, parser, true); + }); + assertThat( + e.toString(), + containsString("unknown key [doc] for a START_ARRAY, expected [docs] or [ids]")); + } + + public void testUnexpectedField() throws IOException { + final XContentBuilder builder = XContentFactory.jsonBuilder(); + builder.startObject(); + { + builder.startObject("docs"); + { + builder.field("_type", "type"); + builder.field("_id", "1"); + } + builder.endObject(); + } + builder.endObject(); + final XContentParser parser = createParser(builder); + final MultiGetRequest mgr = new MultiGetRequest(); + final ParsingException e = expectThrows( + ParsingException.class, + () -> { + final String defaultIndex = randomAsciiOfLength(5); + final String defaultType = randomAsciiOfLength(3); + final FetchSourceContext fetchSource = FetchSourceContext.FETCH_SOURCE; + mgr.add(defaultIndex, defaultType, null, fetchSource, null, parser, true); + }); + assertThat( + e.toString(), + containsString( + "unexpected token [START_OBJECT], expected [FIELD_NAME] or [START_ARRAY]")); + } + public void testAddWithInvalidSourceValueIsRejected() throws Exception { String sourceValue = randomFrom("on", "off", "0", "1"); XContentParser parser = createParser(XContentFactory.jsonBuilder() diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/mget/12_non_existent_index.yaml b/rest-api-spec/src/main/resources/rest-api-spec/test/mget/12_non_existent_index.yaml index fd0100b0d63..06234642250 100644 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/mget/12_non_existent_index.yaml +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/mget/12_non_existent_index.yaml @@ -21,7 +21,6 @@ - do: mget: body: - index: test_2 docs: - { _index: test_1, _type: test, _id: 1}