diff --git a/src/main/java/org/elasticsearch/common/xcontent/XContentBuilder.java b/src/main/java/org/elasticsearch/common/xcontent/XContentBuilder.java index 6146dfdb4b9..ee0b742ca46 100644 --- a/src/main/java/org/elasticsearch/common/xcontent/XContentBuilder.java +++ b/src/main/java/org/elasticsearch/common/xcontent/XContentBuilder.java @@ -529,7 +529,7 @@ public final class XContentBuilder implements BytesStream { return this; } - public XContentBuilder field(XContentBuilderString name, BytesRef value) throws IOException { + public XContentBuilder utf8Field(XContentBuilderString name, BytesRef value) throws IOException { field(name); generator.writeUTF8String(value.bytes, value.offset, value.length); return this; @@ -1135,6 +1135,8 @@ public final class XContentBuilder implements BytesStream { generator.writeNumber(((Float) value).floatValue()); } else if (type == Double.class) { generator.writeNumber(((Double) value).doubleValue()); + } else if (type == Byte.class) { + generator.writeNumber(((Byte)value).byteValue()); } else if (type == Short.class) { generator.writeNumber(((Short) value).shortValue()); } else if (type == Boolean.class) { diff --git a/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantStringTerms.java b/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantStringTerms.java index f99b15ba5a6..619c904b751 100644 --- a/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantStringTerms.java +++ b/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantStringTerms.java @@ -144,7 +144,7 @@ public class SignificantStringTerms extends InternalSignificantTerms { // and I end up with buckets that contravene the user's min_doc_count criteria in my reducer if (bucket.subsetDf >= minDocCount) { builder.startObject(); - builder.field(CommonFields.KEY, ((Bucket) bucket).termBytes); + builder.utf8Field(CommonFields.KEY, ((Bucket) bucket).termBytes); builder.field(CommonFields.DOC_COUNT, bucket.getDocCount()); builder.field("score", bucket.score); builder.field("bg_count", bucket.supersetDf); diff --git a/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/StringTerms.java b/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/StringTerms.java index 50378fe86fe..33db4e89664 100644 --- a/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/StringTerms.java +++ b/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/StringTerms.java @@ -132,7 +132,7 @@ public class StringTerms extends InternalTerms { builder.startArray(CommonFields.BUCKETS); for (InternalTerms.Bucket bucket : buckets) { builder.startObject(); - builder.field(CommonFields.KEY, ((Bucket) bucket).termBytes); + builder.utf8Field(CommonFields.KEY, ((Bucket) bucket).termBytes); builder.field(CommonFields.DOC_COUNT, bucket.getDocCount()); ((InternalAggregations) bucket.getAggregations()).toXContentInternal(builder, params); builder.endObject(); diff --git a/src/test/java/org/elasticsearch/common/xcontent/builder/XContentBuilderTests.java b/src/test/java/org/elasticsearch/common/xcontent/builder/XContentBuilderTests.java index d37ef0dc4c7..fc00f931d7a 100644 --- a/src/test/java/org/elasticsearch/common/xcontent/builder/XContentBuilderTests.java +++ b/src/test/java/org/elasticsearch/common/xcontent/builder/XContentBuilderTests.java @@ -172,6 +172,13 @@ public class XContentBuilderTests extends ElasticsearchTestCase { assertThat(builder.string(), equalTo("{\"test_name\":\"value\"}")); } + @Test + public void testByteConversion() throws Exception { + XContentBuilder builder = XContentFactory.contentBuilder(XContentType.JSON); + builder.startObject().field("test_name", (Byte)(byte)120).endObject(); + assertThat(builder.bytes().toUtf8(), equalTo("{\"test_name\":120}")); + } + @Test public void testDateTypesConversion() throws Exception { Date date = new Date(); @@ -253,4 +260,4 @@ public class XContentBuilderTests extends ElasticsearchTestCase { assertThat(i, equalTo(terms.size())); } -} \ No newline at end of file +}