diff options
author | Christoph Büscher <christoph@elastic.co> | 2017-06-29 13:32:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-29 13:32:13 +0200 |
commit | aa2038f9d7f1ed595e65a26e6eb9ad69663764a1 (patch) | |
tree | 111239a254210b1bd97c381c34967e3a7a6ff85f /core/src | |
parent | 3518e313b81564d2868c834111d716997dd86033 (diff) |
Use DocumentField#toXContent and parsing in SearchHit (#25469)
As a small follow-up to #25361, we can use DocumentFields toXContent/fromXContent
in SearchHit now.
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/main/java/org/elasticsearch/search/SearchHit.java | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/SearchHit.java b/core/src/main/java/org/elasticsearch/search/SearchHit.java index 21a77bfd4b..4300cbcc11 100644 --- a/core/src/main/java/org/elasticsearch/search/SearchHit.java +++ b/core/src/main/java/org/elasticsearch/search/SearchHit.java @@ -435,11 +435,7 @@ public final class SearchHit implements Streamable, ToXContentObject, Iterable<D if (!otherFields.isEmpty()) { builder.startObject(Fields.FIELDS); for (DocumentField field : otherFields) { - builder.startArray(field.getName()); - for (Object value : field.getValues()) { - builder.value(value); - } - builder.endArray(); + field.toXContent(builder, params); } builder.endObject(); } @@ -600,14 +596,9 @@ public final class SearchHit implements Streamable, ToXContentObject, Iterable<D private static Map<String, DocumentField> parseFields(XContentParser parser) throws IOException { Map<String, DocumentField> fields = new HashMap<>(); - while ((parser.nextToken()) != XContentParser.Token.END_OBJECT) { - String fieldName = parser.currentName(); - ensureExpectedToken(XContentParser.Token.START_ARRAY, parser.nextToken(), parser::getTokenLocation); - List<Object> values = new ArrayList<>(); - while ((parser.nextToken()) != XContentParser.Token.END_ARRAY) { - values.add(parseStoredFieldsValue(parser)); - } - fields.put(fieldName, new DocumentField(fieldName, values)); + while (parser.nextToken() != XContentParser.Token.END_OBJECT) { + DocumentField field = DocumentField.fromXContent(parser); + fields.put(field.getName(), field); } return fields; } |