package ch.creativecode.logging; import org.apache.flume.Context; import org.apache.flume.Event; import org.apache.flume.conf.ComponentConfiguration; import org.apache.flume.sink.elasticsearch.ElasticSearchEventSerializer; import org.elasticsearch.common.xcontent.XContentBuilder; import java.io.IOException; import java.util.Map; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; /** * @author Nicolas Baer <nicolas.baer@gmail.com> */ public final class ElasticsearchNumSerializer implements ElasticSearchEventSerializer { @Override public XContentBuilder getContentBuilder(Event event) throws IOException { XContentBuilder builder = jsonBuilder().startObject(); appendBody(builder, event); appendHeaders(builder, event); return builder; } private void appendBody(XContentBuilder builder, Event event) throws IOException { ContentBuilderUtil.appendField(builder, "body", event.getBody()); } private void appendHeaders(XContentBuilder builder, Event event) throws IOException { Map<String, String> headers = event.getHeaders(); for (String key : headers.keySet()) { ContentBuilderUtil.appendField(builder, key, headers.get(key).getBytes(charset)); } } @Override public void configure(Context context) { // no-op } @Override public void configure(ComponentConfiguration conf) { // no-op } }