diff --git a/server/src/main/java/org/elasticsearch/action/search/SearchResponse.java b/server/src/main/java/org/elasticsearch/action/search/SearchResponse.java index 787dc14f6cd96..2a9acd465f727 100644 --- a/server/src/main/java/org/elasticsearch/action/search/SearchResponse.java +++ b/server/src/main/java/org/elasticsearch/action/search/SearchResponse.java @@ -382,23 +382,23 @@ public Clusters getClusters() { @Override public Iterator toXContentChunked(ToXContent.Params params) { assert hasReferences(); - return Iterators.concat( - ChunkedToXContentHelper.startObject(), - this.innerToXContentChunked(params), - ChunkedToXContentHelper.endObject() - ); + return getToXContentIterator(true, params); } public Iterator innerToXContentChunked(ToXContent.Params params) { + return getToXContentIterator(false, params); + } + + private Iterator getToXContentIterator(boolean wrapInObject, ToXContent.Params params) { return Iterators.concat( + wrapInObject ? ChunkedToXContentHelper.startObject() : Collections.emptyIterator(), ChunkedToXContentHelper.chunk(SearchResponse.this::headerToXContent), Iterators.single(clusters), - Iterators.concat( - hits.toXContentChunked(params), - aggregations == null ? Collections.emptyIterator() : ChunkedToXContentHelper.chunk(aggregations), - suggest == null ? Collections.emptyIterator() : ChunkedToXContentHelper.chunk(suggest), - profileResults == null ? Collections.emptyIterator() : ChunkedToXContentHelper.chunk(profileResults) - ) + hits.toXContentChunked(params), + aggregations == null ? Collections.emptyIterator() : ChunkedToXContentHelper.chunk(aggregations), + suggest == null ? Collections.emptyIterator() : ChunkedToXContentHelper.chunk(suggest), + profileResults == null ? Collections.emptyIterator() : ChunkedToXContentHelper.chunk(profileResults), + wrapInObject ? ChunkedToXContentHelper.endObject() : Collections.emptyIterator() ); }