diff --git a/src/main/java/org/elasticsearch/search/aggregations/InternalAggregation.java b/src/main/java/org/elasticsearch/search/aggregations/InternalAggregation.java index 173680ed112ac..98cc598013a4e 100644 --- a/src/main/java/org/elasticsearch/search/aggregations/InternalAggregation.java +++ b/src/main/java/org/elasticsearch/search/aggregations/InternalAggregation.java @@ -155,6 +155,12 @@ protected static void writeSize(int size, StreamOutput out) throws IOException { @Override public final XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(name); + if(params != null && params.paramAsBoolean("output_type", false)) { + builder.field(CommonFields.TYPE, type().name); + } + if(params != null && params.paramAsBoolean("output_concrete_type", false)) { + builder.field(CommonFields.CONCRETE_TYPE, getClass().getName()); + } doXContentBody(builder, params); builder.endObject(); return builder; @@ -167,6 +173,8 @@ public final XContentBuilder toXContent(XContentBuilder builder, Params params) */ public static final class CommonFields { public static final XContentBuilderString BUCKETS = new XContentBuilderString("buckets"); + public static final XContentBuilderString TYPE = new XContentBuilderString("_type"); + public static final XContentBuilderString CONCRETE_TYPE = new XContentBuilderString("_concrete_type"); public static final XContentBuilderString VALUE = new XContentBuilderString("value"); public static final XContentBuilderString VALUES = new XContentBuilderString("values"); public static final XContentBuilderString VALUE_AS_STRING = new XContentBuilderString("value_as_string");