
Elasticsearch Load
CertifiedBulk load from Kestra storage
Elasticsearch Load
Bulk load from Kestra storage
Reads ION-serialized records from a Kestra internal storage file and sends them in bulk as INDEX, CREATE, UPDATE or DELETE operations, depending on opType. Uses the parent chunk size; set removeIdKey to keep or drop the id field after use.
type: io.kestra.plugin.elasticsearch.LoadExamples
id: elasticsearch_load
namespace: company.team
inputs:
- id: file
type: FILE
tasks:
- id: load
type: io.kestra.plugin.elasticsearch.Load
connection:
hosts:
- "http://localhost:9200"
from: "{{ inputs.file }}"
index: "my_index"
id: elasticsearch_load_update
namespace: company.team
inputs:
- id: file
type: FILE
tasks:
- id: update
type: io.kestra.plugin.elasticsearch.Load
connection:
hosts:
- "http://localhost:9200"
from: "{{ inputs.file }}"
index: "my_index"
idKey: "id"
opType: UPDATE
Installation
Our standard Docker images already include this plugin. If you use a -slim image or another setup, install it with the following command:
kestractl plugins get io.kestra.plugin:plugin-elasticsearch --compatible-for $KESTRA_VERSION For kestractl, use your Kestra version with --compatible-for, or specify an exact plugin version.
For Kestra CLI, replace LATEST with a specific version or version range to pin the plugin version.
Properties
connection *
Elasticsearch connection
Connection settings shared by tasks; hosts are required.
from *string
Source file
Kestra internal storage URI containing bulk payload; supports dynamic rendering.
Pebble expression referencing an Internal Storage URI e.g. {{ outputs.mytask.uri }}.
index *string
The Elasticsearch index
assets
Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.
io.kestra.core.models.assets.AssetsDeclaration
IGNOREFAILWARNAsset failure behavior
Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.
Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.
The assets consumed as inputs.
io.kestra.core.models.assets.AssetIdentifier
1The assets produced as outputs.
io.kestra.plugin.ee.assets.Dataset
1150{}1150io.kestra.plugin.ee.assets.File
1150{}1150io.kestra.plugin.ee.assets.Table
1150{}1150io.kestra.plugin.ee.assets.VM
1150{}1150io.kestra.core.models.assets.External
1150{}1150io.kestra.core.models.assets.Custom
11501Custom asset type
{}1150chunk integerstring
1000Bulk chunk size
Number of operations per bulk request; default 1000.
idKey string
Field used as document id
Name of the field to use as _id. Required when opType is UPDATE or DELETE; optional otherwise (Elasticsearch generates ids when unset).
opType string
INDEXCREATEUPDATEDELETEOperation type
Bulk operation applied to each record: INDEX (default), CREATE, UPDATE (partial update, upserting the record if missing), or DELETE.
CREATE fails the task if a document with the same id already exists.
UPDATE and DELETE require idKey.
The load is not atomic: records are validated while streaming, so a failure on a bad record (e.g. a missing idKey field) can leave earlier chunks already applied.
removeIdKey booleanstring
trueRemove id field from document
When true (default), drops the idKey field from the indexed document body.
routing string
Custom shard routing
Optional routing key hashed to pick the shard instead of using the document id.
Outputs
size integer
Indexed document count
Total operations sent across all bulk requests.
Metrics
records counter
recordsNumber of records loaded
requests.count counter
Number of bulk requests sent
requests.duration timer
Duration of bulk requests