Skip to content

fix: parse 'create' responses in elasticsearch bulk API#969

Open
Vitalymt wants to merge 1 commit into
ozontech:masterfrom
Vitalymt:fix/elasticsearch-create-op-type
Open

fix: parse 'create' responses in elasticsearch bulk API#969
Vitalymt wants to merge 1 commit into
ozontech:masterfrom
Vitalymt:fix/elasticsearch-create-op-type

Conversation

@Vitalymt
Copy link
Copy Markdown

@Vitalymt Vitalymt commented May 7, 2026

Problem

When using output.elasticsearch with batch_op_type: create (required for ES/OpenSearch data streams), the plugin logs false errors and increments error metrics even though documents are successfully created.

reportESErrors() only checks for the "index" key in bulk response items. When batch_op_type: create is used, Elasticsearch returns "create": {...} instead, which the plugin doesn't recognize:

unknown elasticsearch response, 'index' field in the response is empty
some events from batch aren't written

Events are actually written successfully (status 201), but operators see error logs and incorrect indexingErrors metrics.

Fix

Added fallback to check for the "create" key when "index" is not found. Status code validation now works correctly for both response types. Added test cases covering "create" and mixed "index" + "create" responses.

Fixes #898

When batch_op_type is set to 'create' (required for ES/OpenSearch data
streams), the bulk API returns responses with a 'create' key instead of
'index'. The plugin was only checking for the 'index' key, causing it to
report errors and mark events as failed even though documents were
successfully created.

Now the plugin checks for both 'index' and 'create' keys in the response
items, falling back to error only when neither is present.

Fixes ozontech#898
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug:

1 participant