Skip to content

Commit ccbea2e

Browse files
committed
Fix parsing of the fields parameter of bulk requests.
1 parent 0187508 commit ccbea2e

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

core/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.elasticsearch.action.index.IndexRequest;
3131
import org.elasticsearch.action.update.UpdateRequest;
3232
import org.elasticsearch.common.Nullable;
33-
import org.elasticsearch.common.Strings;
3433
import org.elasticsearch.common.bytes.BytesArray;
3534
import org.elasticsearch.common.bytes.BytesReference;
3635
import org.elasticsearch.common.io.stream.StreamInput;
@@ -332,10 +331,16 @@ public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Null
332331
} else if ("_retry_on_conflict".equals(currentFieldName) || "_retryOnConflict".equals(currentFieldName)) {
333332
retryOnConflict = parser.intValue();
334333
} else if ("fields".equals(currentFieldName)) {
334+
throw new IllegalArgumentException("Action/metadata line [" + line + "] contains a simple value for parameter [fields] while a list is expected");
335+
} else {
336+
throw new IllegalArgumentException("Action/metadata line [" + line + "] contains an unknown parameter [" + currentFieldName + "]");
337+
}
338+
} else if (token == XContentParser.Token.START_ARRAY) {
339+
if ("fields".equals(currentFieldName)) {
335340
List<Object> values = parser.list();
336341
fields = values.toArray(new String[values.size()]);
337342
} else {
338-
throw new IllegalArgumentException("Action/metadata line [" + line + "] contains an unknown parameter [" + currentFieldName + "]");
343+
throw new IllegalArgumentException("Malformed action/metadata line [" + line + "], expected a simple value for field [" + currentFieldName + "] but found [" + token + "]");
339344
}
340345
} else if (token != XContentParser.Token.VALUE_NULL) {
341346
throw new IllegalArgumentException("Malformed action/metadata line [" + line + "], expected a simple value for field [" + currentFieldName + "] but found [" + token + "]");

rest-api-spec/src/main/resources/rest-api-spec/api/bulk.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"description" : "Default document type for items which don't provide one"
3939
},
4040
"fields": {
41-
"type": "string",
41+
"type": "list",
4242
"description" : "Default comma-separated list of fields to return in the response for updates"
4343
}
4444
}

0 commit comments

Comments
 (0)