Writes the contents of a FlowFile to Elasticsearch, using the specified parameters such as the index to insert into and the type of the document. If the cluster has been configured for authorization and/or secure transport (SSL/TLS) and the Shield plugin is available, secure connections can be made. This processor supports Elasticsearch 2.x clusters.


elasticsearch, insert, update, write, put


In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values, whether a property supports the NiFi Expression Language, and whether a property is considered "sensitive", meaning that its value will be encrypted. Before entering a value in a sensitive property, ensure that the nifi.properties file has an entry for the property nifi.sensitive.props.key.

NameDefault ValueAllowable ValuesDescription
Cluster NameelasticsearchName of the ES cluster (for example, elasticsearch_brew). Defaults to 'elasticsearch'
Supports Expression Language: true
ElasticSearch HostsElasticSearch Hosts, which should be comma separated and colon for hostname/port host1:port,host2:port,.... For example testcluster:9300. This processor uses the Transport Client to connect to hosts. The default transport client port is 9300.
Supports Expression Language: true
SSL Context ServiceController Service API:
Implementations: StandardSSLContextService
The SSL Context Service used to provide client certificate information for TLS/SSL connections. This service only applies if the Elasticsearch endpoint(s) have been secured with TLS/SSL.
Shield Plugin FilenameSpecifies the path to the JAR for the Elasticsearch Shield plugin. If the Elasticsearch cluster has been secured with the Shield plugin, then the Shield plugin JAR must also be available to this processor. Note: Do NOT place the Shield JAR into NiFi's lib/ directory, doing so will prevent the Shield plugin from being loaded.
Supports Expression Language: true
UsernameUsername to access the Elasticsearch cluster
Supports Expression Language: true
PasswordPassword to access the Elasticsearch cluster
Sensitive Property: true
Supports Expression Language: true
ElasticSearch Ping Timeout5sThe ping timeout used to determine when a node is unreachable. For example, 5s (5 seconds). If non-local recommended is 30s
Supports Expression Language: true
Sampler Interval5sHow often to sample / ping the nodes listed and connected. For example, 5s (5 seconds). If non-local recommended is 30s.
Supports Expression Language: true
Identifier AttributeThe name of the attribute containing the identifier for each FlowFile
IndexThe name of the index to insert into
Supports Expression Language: true
TypeThe type of this document (used by Elasticsearch for indexing and searching)
Supports Expression Language: true
Character SetUTF-8Specifies the character set of the document data.
Supports Expression Language: true
Batch Size100The preferred number of FlowFiles to put to the database in a single transaction
Supports Expression Language: true
Index OperationindexThe type of the operation used to index (index, update, upsert)
Supports Expression Language: true


retryA FlowFile is routed to this relationship if the database cannot be updated but attempting the operation again may succeed
successAll FlowFiles that are written to Elasticsearch are routed to this relationship
failureAll FlowFiles that cannot be written to Elasticsearch are routed to this relationship

Reads Attributes:

None specified.

Writes Attributes:

None specified.

State management:

This component does not store state.


This component is not restricted.

Input requirement:

This component requires an incoming relationship.