logging-flume icon indicating copy to clipboard operation
logging-flume copied to clipboard

WIP: Honor UUID interceptor in ElasticSearch sink

Open AndreLouisCaron opened this issue 5 years ago • 0 comments

ElasticSearch provides support for deduplication of events using the _id field when inserting documents using the bulk insert facility.

When using the UUID interceptor with headerName = _id for this purpose, the logstash serializer will rename this as @fields._id, which is stored as though it were any other field.

In order to enable deduplication of events in the ElasticSearch sink, we need to ensure the header containing the document ID is sent as _id, no matter what its original name is.

The dynamic serializer probably does not have the same limitation, but it currently counts on the UUID interceptor's headerName property to be set to _id. This is not the default and it is unlikely to work in complex Flume networks that replicate events to multiple sinks. Therefore, I fixed it to support the same logic as the logstash serializer.

AndreLouisCaron avatar Mar 27 '20 03:03 AndreLouisCaron