Hi,

I couldn't find a way to create a valid document using the XContentBuilder 
including a raw field only. 

Following the code I used:

      jsonStr = "{\"field\":\"value\"}";
      XContentBuilder xb = jsonBuilder()
          .startObject()
          .rawField("object_name", jsonStr.getBytes())
       .endObject();

This code resulted in a malformed json document { , "object_name" : 
{"field":"value"} }. Looking at the JsonXContentGenerator implementation of 
writeRawField it looks like this is what the code is expected to do, in 
fact:

    @Override
    public void writeRawField(String fieldName, byte[] content, 
OutputStream bos) throws IOException {
        generator.writeRaw(", \"");
        generator.writeRaw(fieldName);
        generator.writeRaw("\" : ");
        flush();
        bos.write(content);
    }

In order to overcome this I had to add a dummy empty field to the document:

      XContentBuilder xb = jsonBuilder()
          .startObject()
          .field("dummy", "")
          .rawField(DOC_OBJECT_NAME, jsonStr.getBytes())
       .endObject();

I wonder if there is any other method allowing to add a raw field only to a 
document using XContentBuilder or not. 

Thank you in advance,

Andrea

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/1eb49552-df19-4548-9696-534c1c3428b7%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to