<extensionManifest><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-restapi-nar</artifactId><version>1.28.0.250-eep-1001</version><parentNar><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-client-service-api-nar</artifactId><version>1.28.0.250-eep-1001</version></parentNar><systemApiVersion>1.28.0.250-eep-1001</systemApiVersion><buildInfo><tag>nifi-1.28.0-RC1</tag><branch>UNKNOWN</branch><revision>bdae0d7</revision></buildInfo><extensions><extension><name>org.apache.nifi.processors.elasticsearch.ConsumeElasticsearch</name><type>PROCESSOR</type><description>A processor that repeatedly runs a paginated query against a field using a Range query to consume new Documents from an Elasticsearch index/query. The processor will retrieve multiple pages of results until either no more results are available or the Pagination Keep Alive expiration is reached, after which the Range query will automatically update the field constraint based on the last retrieved Document value.</description><tags><tag>elasticsearch</tag><tag>elasticsearch5</tag><tag>elasticsearch6</tag><tag>elasticsearch7</tag><tag>elasticsearch8</tag><tag>query</tag><tag>scroll</tag><tag>page</tag><tag>search</tag><tag>json</tag></tags><properties><property><name>es-rest-range-field</name><displayName>Range Query Field</displayName><description>Field to be tracked as part of an Elasticsearch Range query using a "gt" bound match. This field must exist within the Elasticsearch document for it to be retrieved.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>es-rest-sort-order</name><displayName>Sort Order</displayName><description>The order in which to sort the "Range Query Field". A "sort" clause for the "Range Query Field" field will be prepended to any provided "Sort" clauses. If a "sort" clause already exists for the "Range Query Field" field, it will not be updated.</description><defaultValue>asc</defaultValue><allowableValues><allowableValue><displayName>asc</displayName><value>asc</value><description></description></allowableValue><allowableValue><displayName>desc</displayName><value>desc</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>es-rest-range-initial-value</name><displayName>Initial Value</displayName><description>The initial value to use for the query if the processor has not run previously. If the processor has run previously and stored a value in its state, this property will be ignored. If no value is provided, and the processor has not previously run, no Range query bounds will be used, i.e. all documents will be retrieved in the specified "Sort Order".</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>es-rest-range-format</name><displayName>Initial Value Date Format</displayName><description>If the "Range Query Field" is a Date field, convert the "Initial Value" to a date with this format. If not specified, Elasticsearch will use the date format provided by the "Range Query Field"'s mapping. For valid syntax, see https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>es-rest-range-initial-value</propertyName><propertyDisplayName>Initial Value</propertyDisplayName></dependency></dependencies></property><property><name>es-rest-range-time-zone</name><displayName>Initial Value Date Time Zone</displayName><description>If the "Range Query Field" is a Date field, convert the "Initial Value" to UTC with this time zone. Valid values are ISO 8601 UTC offsets, such as "+01:00" or "-08:00", and IANA time zone IDs, such as "Europe/London".</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>es-rest-range-initial-value</propertyName><propertyDisplayName>Initial Value</propertyDisplayName></dependency></dependencies></property><property><name>es-rest-additional-filters</name><displayName>Additional Filters</displayName><description>One or more query filters in JSON syntax, not Lucene syntax. Ex: [{"match":{"somefield":"somevalue"}}, {"match":{"anotherfield":"anothervalue"}}]. These filters wil be used as part of a Bool query's filter.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>es-rest-size</name><displayName>Size</displayName><description>The maximum number of documents to retrieve in the query. If the query is paginated, this "size" applies to each page of the query, not the "size" of the entire result set.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>es-rest-query-sort</name><displayName>Sort</displayName><description>Sort results by one or more fields, in JSON syntax. Ex: [{"price" : {"order" : "asc", "mode" : "avg"}}, {"post_date" : {"format": "strict_date_optional_time_nanos"}}]</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>es-rest-query-aggs</name><displayName>Aggregations</displayName><description>One or more query aggregations (or "aggs"), in JSON syntax. Ex: {"items": {"terms": {"field": "product", "size": 10}}}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>es-rest-query-fields</name><displayName>Fields</displayName><description>Fields of indexed documents to be retrieved, in JSON syntax. Ex: ["user.id", "http.response.*", {"field": "@timestamp", "format": "epoch_millis"}]</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>es-rest-query-script-fields</name><displayName>Script Fields</displayName><description>Fields to created using script evaluation at query runtime, in JSON syntax. Ex: {"test1": {"script": {"lang": "painless", "source": "doc['price'].value * 2"}}, "test2": {"script": {"lang": "painless", "source": "doc['price'].value * params.factor", "params": {"factor": 2.0}}}}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-query-attribute</name><displayName>Query Attribute</displayName><description>If set, the executed query will be set on each result flowfile in the specified attribute.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-fetch-index</name><displayName>Index</displayName><description>The name of the index to use.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-type</name><displayName>Type</displayName><description>The type of this document (used by Elasticsearch for indexing and searching).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-client-service</name><displayName>Client Service</displayName><description>An Elasticsearch client service to use for running queries.</description><controllerServiceDefinition><className>org.apache.nifi.elasticsearch.ElasticSearchClientService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-client-service-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-split-up-hits</name><displayName>Search Results Split</displayName><description>Output a flowfile containing all hits or one flowfile for each individual hit or one flowfile containing all hits from all paged responses.</description><defaultValue>splitUp-no</defaultValue><allowableValues><allowableValue><displayName>PER_HIT</displayName><value>splitUp-yes</value><description>Flowfile per hit.</description></allowableValue><allowableValue><displayName>PER_RESPONSE</displayName><value>splitUp-no</value><description>Flowfile per response.</description></allowableValue><allowableValue><displayName>PER_QUERY</displayName><value>splitUp-query</value><description>Combine results from all query responses (one flowfile per entire paginated result set of hits). Note that aggregations cannot be paged, they are generated across the entire result set and returned as part of the first page. Results are output with one JSON object per line (allowing hits to be combined from multiple pages without loading all results into memory).</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-format-hits</name><displayName>Search Results Format</displayName><description>Format of Hits output.</description><defaultValue>FULL</defaultValue><allowableValues><allowableValue><displayName>FULL</displayName><value>FULL</value><description>Contains full Elasticsearch Hit, including Document Source and Metadata.</description></allowableValue><allowableValue><displayName>SOURCE_ONLY</displayName><value>SOURCE_ONLY</value><description>Document Source only (where present).</description></allowableValue><allowableValue><displayName>METADATA_ONLY</displayName><value>METADATA_ONLY</value><description>Hit Metadata only.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-split-up-aggregations</name><displayName>Aggregation Results Split</displayName><description>Output a flowfile containing all aggregations or one flowfile for each individual aggregation.</description><defaultValue>splitUp-no</defaultValue><allowableValues><allowableValue><displayName>PER_HIT</displayName><value>splitUp-yes</value><description>Flowfile per hit.</description></allowableValue><allowableValue><displayName>PER_RESPONSE</displayName><value>splitUp-no</value><description>Flowfile per response.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-format-aggregations</name><displayName>Aggregation Results Format</displayName><description>Format of Aggregation output.</description><defaultValue>FULL</defaultValue><allowableValues><allowableValue><displayName>FULL</displayName><value>FULL</value><description>Contains full Elasticsearch Aggregation, including Buckets and Metadata.</description></allowableValue><allowableValue><displayName>BUCKETS_ONLY</displayName><value>BUCKETS_ONLY</value><description>Bucket Content only.</description></allowableValue><allowableValue><displayName>METADATA_ONLY</displayName><value>METADATA_ONLY</value><description>Aggregation Metadata only.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-output-no-hits</name><displayName>Output No Hits</displayName><description>Output a "hits" flowfile even if no hits found for query. If true, an empty "hits" flowfile will be output even if "aggregations" are output.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-pagination-type</name><displayName>Pagination Type</displayName><description>Pagination method to use. Not all types are available for all Elasticsearch versions, check the Elasticsearch docs to confirm which are applicable and recommended for your service.</description><defaultValue>pagination-scroll</defaultValue><allowableValues><allowableValue><displayName>SCROLL</displayName><value>pagination-scroll</value><description>Use Elasticsearch "_scroll" API to page results. Does not accept additional query parameters.</description></allowableValue><allowableValue><displayName>SEARCH_AFTER</displayName><value>pagination-search_after</value><description>Use Elasticsearch "search_after" _search API to page sorted results.</description></allowableValue><allowableValue><displayName>POINT_IN_TIME</displayName><value>pagination-pit</value><description>Use Elasticsearch (7.10+ with XPack) "point in time" _search API to page sorted results.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-pagination-keep-alive</name><displayName>Pagination Keep Alive</displayName><description>Pagination "keep_alive" period. Period Elasticsearch will keep the scroll/pit cursor alive in between requests (this is not the time expected for all pages to be returned, but the maximum allowed time for requests between page retrievals).</description><defaultValue>10 mins</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><dynamicProperties><dynamicProperty><name>The name of a URL query parameter to add</name><value>The value of the URL query parameter</value><description>Adds the specified property name/value as a query parameter in the Elasticsearch URL used for processing. These parameters will override any matching parameters in the query request body. For SCROLL type queries, these parameters are only used in the initial (first page) query as the Elasticsearch Scroll API does not support the same query parameters for subsequent pages of data.</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>aggregations</name><description>Aggregations are routed to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>hits</name><description>Search hits are routed to this relationship.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>mime.type</name><description>application/json</description></writesAttribute><writesAttribute><name>page.number</name><description>The number of the page (request), starting from 1, in which the results were returned that are in the output flowfile</description></writesAttribute><writesAttribute><name>hit.count</name><description>The number of hits that are in the output flowfile</description></writesAttribute><writesAttribute><name>elasticsearch.query.error</name><description>The error message provided by Elasticsearch if there is an error querying the index.</description></writesAttribute></writesAttributes><triggerSerially>true</triggerSerially><primaryNodeOnly>true</primaryNodeOnly><stateful><description>The pagination state (scrollId, searchAfter, pitId, hitCount, pageCount, pageExpirationTimestamp, trackingRangeValue) is retained in between invocations of this processor until the Scroll/PiT has expired (when the current time is later than the last query execution plus the Pagination Keep Alive interval).</description><scopes><scope>CLUSTER</scope></scopes></stateful><inputRequirement>INPUT_FORBIDDEN</inputRequirement><systemResourceConsiderations><systemResourceConsideration><resource>MEMORY</resource><description>Care should be taken on the size of each page because each response from Elasticsearch will be loaded into memory all at once and converted into the resulting flowfiles.</description></systemResourceConsideration></systemResourceConsiderations><seeAlso><see>org.apache.nifi.processors.elasticsearch.SearchElasticsearch</see><see>org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch</see></seeAlso><defaultSchedule><strategy>TIMER_DRIVEN</strategy><period>1 min</period><concurrentTasks>1</concurrentTasks></defaultSchedule></extension><extension><name>org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch</name><type>PROCESSOR</type><description>Delete from an Elasticsearch index using a query. The query can be loaded from a flowfile body or from the Query parameter.</description><tags><tag>elastic</tag><tag>elasticsearch</tag><tag>elasticsearch5</tag><tag>elasticsearch6</tag><tag>elasticsearch7</tag><tag>elasticsearch8</tag><tag>delete</tag><tag>query</tag></tags><properties><property><name>el-rest-query-definition-style</name><displayName>Query Definition Style</displayName><description>How the JSON Query will be defined for use by the processor.</description><defaultValue>full</defaultValue><allowableValues><allowableValue><displayName>FULL_QUERY</displayName><value>full</value><description>Provide the full Query.</description></allowableValue><allowableValue><displayName>BUILD_QUERY</displayName><value>build</value><description>Build the Query from separate JSON objects.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-query</name><displayName>Query</displayName><description>A query in JSON syntax, not Lucene syntax. Ex: {"query":{"match":{"somefield":"somevalue"}}}. If this parameter is not set, the query will be read from the flowfile content. If the query (property and flowfile content) is empty, a default empty JSON Object will be used, which will result in a "match_all" query in Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>full</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-rest-query-clause</name><displayName>Query Clause</displayName><description>A "query" clause in JSON syntax, not Lucene syntax. Ex: {"match":{"somefield":"somevalue"}}. If the query is empty, a default JSON Object will be used, which will result in a "match_all" query in Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-query-attribute</name><displayName>Query Attribute</displayName><description>If set, the executed query will be set on each result flowfile in the specified attribute.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-fetch-index</name><displayName>Index</displayName><description>The name of the index to use.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-type</name><displayName>Type</displayName><description>The type of this document (used by Elasticsearch for indexing and searching).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-client-service</name><displayName>Client Service</displayName><description>An Elasticsearch client service to use for running queries.</description><controllerServiceDefinition><className>org.apache.nifi.elasticsearch.ElasticSearchClientService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-client-service-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><dynamicProperties><dynamicProperty><name>The name of a URL query parameter to add</name><value>The value of the URL query parameter</value><description>Adds the specified property name/value as a query parameter in the Elasticsearch URL used for processing. These parameters will override any matching parameters in the query request body</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>retry</name><description>All flowfiles that fail due to server/cluster availability go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>If the "by query" operation succeeds, and a flowfile was read, it will be sent to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>If the "by query" operation fails, and a flowfile was read, it will be sent to this relationship.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>elasticsearch.delete.took</name><description>The amount of time that it took to complete the delete operation in ms.</description></writesAttribute><writesAttribute><name>elasticsearch.delete.error</name><description>The error message provided by Elasticsearch if there is an error running the delete.</description></writesAttribute></writesAttributes><inputRequirement>INPUT_ALLOWED</inputRequirement></extension><extension><name>org.apache.nifi.processors.elasticsearch.GetElasticsearch</name><type>PROCESSOR</type><description>Elasticsearch get processor that uses the official Elastic REST client libraries to fetch a single document from Elasticsearch by _id. Note that the full body of the document will be read into memory before being written to a FlowFile for transfer.</description><tags><tag>json</tag><tag>elasticsearch</tag><tag>elasticsearch5</tag><tag>elasticsearch6</tag><tag>elasticsearch7</tag><tag>elasticsearch8</tag><tag>put</tag><tag>index</tag><tag>record</tag></tags><properties><property><name>get-es-id</name><displayName>Document Id</displayName><description>The _id of the document to retrieve.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-fetch-index</name><displayName>Index</displayName><description>The name of the index to use.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-type</name><displayName>Type</displayName><description>The type of this document (used by Elasticsearch for indexing and searching).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>get-es-destination</name><displayName>Destination</displayName><description>Indicates whether the retrieved document is written to the FlowFile content or a FlowFile attribute.</description><defaultValue>flowfile-content</defaultValue><allowableValues><allowableValue><displayName>FlowFile Content</displayName><value>flowfile-content</value><description>Output the retrieved document as the FlowFile content.</description></allowableValue><allowableValue><displayName>FlowFile Attribute</displayName><value>flowfile-attribute</value><description>Output the retrieved document as a FlowFile attribute specified by the Attribute Name.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>get-es-attribute-name</name><displayName>Attribute Name</displayName><description>The name of the FlowFile attribute to use for the retrieved document output.</description><defaultValue>elasticsearch.doc</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>get-es-destination</propertyName><propertyDisplayName>Destination</propertyDisplayName><dependentValues><dependentValue>flowfile-attribute</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-rest-client-service</name><displayName>Client Service</displayName><description>An Elasticsearch client service to use for running queries.</description><controllerServiceDefinition><className>org.apache.nifi.elasticsearch.ElasticSearchClientService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-client-service-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><dynamicProperties><dynamicProperty><name>The name of a URL query parameter to add</name><value>The value of the URL query parameter</value><description>Adds the specified property name/value as a query parameter in the Elasticsearch URL used for processing.</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>retry</name><description>All flowfiles that fail due to server/cluster availability go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>document</name><description>Fetched documents are routed to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>not_found</name><description>A FlowFile is routed to this relationship if the specified document does not exist in the Elasticsearch cluster.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>All flowfiles that fail for reasons unrelated to server availability go to this relationship.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>filename</name><description>The filename attribute is set to the document identifier</description></writesAttribute><writesAttribute><name>elasticsearch.index</name><description>The Elasticsearch index containing the document</description></writesAttribute><writesAttribute><name>elasticsearch.type</name><description>The Elasticsearch document type</description></writesAttribute><writesAttribute><name>elasticsearch.get.error</name><description>The error message provided by Elasticsearch if there is an error fetching the document.</description></writesAttribute></writesAttributes><inputRequirement>INPUT_ALLOWED</inputRequirement><seeAlso><see>org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch</see></seeAlso></extension><extension><name>org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch</name><type>PROCESSOR</type><description>A processor that allows the user to run a query (with aggregations) written with the Elasticsearch JSON DSL. It does not automatically paginate queries for the user. If an incoming relationship is added to this processor, it will use the flowfile's content for the query. Care should be taken on the size of the query because the entire response from Elasticsearch will be loaded into memory all at once and converted into the resulting flowfiles.</description><tags><tag>elasticsearch</tag><tag>elasticsearch5</tag><tag>elasticsearch6</tag><tag>elasticsearch7</tag><tag>elasticsearch8</tag><tag>query</tag><tag>read</tag><tag>get</tag><tag>json</tag></tags><properties><property><name>el-rest-query-definition-style</name><displayName>Query Definition Style</displayName><description>How the JSON Query will be defined for use by the processor.</description><defaultValue>full</defaultValue><allowableValues><allowableValue><displayName>FULL_QUERY</displayName><value>full</value><description>Provide the full Query.</description></allowableValue><allowableValue><displayName>BUILD_QUERY</displayName><value>build</value><description>Build the Query from separate JSON objects.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-query</name><displayName>Query</displayName><description>A query in JSON syntax, not Lucene syntax. Ex: {"query":{"match":{"somefield":"somevalue"}}}. If this parameter is not set, the query will be read from the flowfile content. If the query (property and flowfile content) is empty, a default empty JSON Object will be used, which will result in a "match_all" query in Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>full</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-rest-query-clause</name><displayName>Query Clause</displayName><description>A "query" clause in JSON syntax, not Lucene syntax. Ex: {"match":{"somefield":"somevalue"}}. If the query is empty, a default JSON Object will be used, which will result in a "match_all" query in Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-size</name><displayName>Size</displayName><description>The maximum number of documents to retrieve in the query. If the query is paginated, this "size" applies to each page of the query, not the "size" of the entire result set.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-sort</name><displayName>Sort</displayName><description>Sort results by one or more fields, in JSON syntax. Ex: [{"price" : {"order" : "asc", "mode" : "avg"}}, {"post_date" : {"format": "strict_date_optional_time_nanos"}}]</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-aggs</name><displayName>Aggregations</displayName><description>One or more query aggregations (or "aggs"), in JSON syntax. Ex: {"items": {"terms": {"field": "product", "size": 10}}}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-fields</name><displayName>Fields</displayName><description>Fields of indexed documents to be retrieved, in JSON syntax. Ex: ["user.id", "http.response.*", {"field": "@timestamp", "format": "epoch_millis"}]</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-script-fields</name><displayName>Script Fields</displayName><description>Fields to created using script evaluation at query runtime, in JSON syntax. Ex: {"test1": {"script": {"lang": "painless", "source": "doc['price'].value * 2"}}, "test2": {"script": {"lang": "painless", "source": "doc['price'].value * params.factor", "params": {"factor": 2.0}}}}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-query-attribute</name><displayName>Query Attribute</displayName><description>If set, the executed query will be set on each result flowfile in the specified attribute.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-fetch-index</name><displayName>Index</displayName><description>The name of the index to use.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-type</name><displayName>Type</displayName><description>The type of this document (used by Elasticsearch for indexing and searching).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-client-service</name><displayName>Client Service</displayName><description>An Elasticsearch client service to use for running queries.</description><controllerServiceDefinition><className>org.apache.nifi.elasticsearch.ElasticSearchClientService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-client-service-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-split-up-hits</name><displayName>Search Results Split</displayName><description>Output a flowfile containing all hits or one flowfile for each individual hit.</description><defaultValue>splitUp-no</defaultValue><allowableValues><allowableValue><displayName>PER_HIT</displayName><value>splitUp-yes</value><description>Flowfile per hit.</description></allowableValue><allowableValue><displayName>PER_RESPONSE</displayName><value>splitUp-no</value><description>Flowfile per response.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-format-hits</name><displayName>Search Results Format</displayName><description>Format of Hits output.</description><defaultValue>FULL</defaultValue><allowableValues><allowableValue><displayName>FULL</displayName><value>FULL</value><description>Contains full Elasticsearch Hit, including Document Source and Metadata.</description></allowableValue><allowableValue><displayName>SOURCE_ONLY</displayName><value>SOURCE_ONLY</value><description>Document Source only (where present).</description></allowableValue><allowableValue><displayName>METADATA_ONLY</displayName><value>METADATA_ONLY</value><description>Hit Metadata only.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-split-up-aggregations</name><displayName>Aggregation Results Split</displayName><description>Output a flowfile containing all aggregations or one flowfile for each individual aggregation.</description><defaultValue>splitUp-no</defaultValue><allowableValues><allowableValue><displayName>PER_HIT</displayName><value>splitUp-yes</value><description>Flowfile per hit.</description></allowableValue><allowableValue><displayName>PER_RESPONSE</displayName><value>splitUp-no</value><description>Flowfile per response.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-format-aggregations</name><displayName>Aggregation Results Format</displayName><description>Format of Aggregation output.</description><defaultValue>FULL</defaultValue><allowableValues><allowableValue><displayName>FULL</displayName><value>FULL</value><description>Contains full Elasticsearch Aggregation, including Buckets and Metadata.</description></allowableValue><allowableValue><displayName>BUCKETS_ONLY</displayName><value>BUCKETS_ONLY</value><description>Bucket Content only.</description></allowableValue><allowableValue><displayName>METADATA_ONLY</displayName><value>METADATA_ONLY</value><description>Aggregation Metadata only.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-output-no-hits</name><displayName>Output No Hits</displayName><description>Output a "hits" flowfile even if no hits found for query. If true, an empty "hits" flowfile will be output even if "aggregations" are output.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><dynamicProperties><dynamicProperty><name>The name of a URL query parameter to add</name><value>The value of the URL query parameter</value><description>Adds the specified property name/value as a query parameter in the Elasticsearch URL used for processing. These parameters will override any matching parameters in the query request body</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>aggregations</name><description>Aggregations are routed to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>All flowfiles that fail for reasons unrelated to server availability go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>original</name><description>All original flowfiles that don't cause an error to occur go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>hits</name><description>Search hits are routed to this relationship.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>mime.type</name><description>application/json</description></writesAttribute><writesAttribute><name>aggregation.name</name><description>The name of the aggregation whose results are in the output flowfile</description></writesAttribute><writesAttribute><name>aggregation.number</name><description>The number of the aggregation whose results are in the output flowfile</description></writesAttribute><writesAttribute><name>hit.count</name><description>The number of hits that are in the output flowfile</description></writesAttribute><writesAttribute><name>elasticsearch.query.error</name><description>The error message provided by Elasticsearch if there is an error querying the index.</description></writesAttribute></writesAttributes><eventDriven>true</eventDriven><inputRequirement>INPUT_ALLOWED</inputRequirement><seeAlso><see>org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch</see></seeAlso></extension><extension><name>org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch</name><type>PROCESSOR</type><description>A processor that allows the user to run a paginated query (with aggregations) written with the Elasticsearch JSON DSL. It will use the flowfile's content for the query unless the QUERY attribute is populated. Search After/Point in Time queries must include a valid "sort" field.</description><tags><tag>elasticsearch</tag><tag>elasticsearch5</tag><tag>elasticsearch6</tag><tag>elasticsearch7</tag><tag>elasticsearch8</tag><tag>query</tag><tag>scroll</tag><tag>page</tag><tag>read</tag><tag>json</tag></tags><properties><property><name>el-rest-query-definition-style</name><displayName>Query Definition Style</displayName><description>How the JSON Query will be defined for use by the processor.</description><defaultValue>full</defaultValue><allowableValues><allowableValue><displayName>FULL_QUERY</displayName><value>full</value><description>Provide the full Query.</description></allowableValue><allowableValue><displayName>BUILD_QUERY</displayName><value>build</value><description>Build the Query from separate JSON objects.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-query</name><displayName>Query</displayName><description>A query in JSON syntax, not Lucene syntax. Ex: {"query":{"match":{"somefield":"somevalue"}}}. If this parameter is not set, the query will be read from the flowfile content. If the query (property and flowfile content) is empty, a default empty JSON Object will be used, which will result in a "match_all" query in Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>full</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-rest-query-clause</name><displayName>Query Clause</displayName><description>A "query" clause in JSON syntax, not Lucene syntax. Ex: {"match":{"somefield":"somevalue"}}. If the query is empty, a default JSON Object will be used, which will result in a "match_all" query in Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-size</name><displayName>Size</displayName><description>The maximum number of documents to retrieve in the query. If the query is paginated, this "size" applies to each page of the query, not the "size" of the entire result set.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-sort</name><displayName>Sort</displayName><description>Sort results by one or more fields, in JSON syntax. Ex: [{"price" : {"order" : "asc", "mode" : "avg"}}, {"post_date" : {"format": "strict_date_optional_time_nanos"}}]</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-aggs</name><displayName>Aggregations</displayName><description>One or more query aggregations (or "aggs"), in JSON syntax. Ex: {"items": {"terms": {"field": "product", "size": 10}}}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-fields</name><displayName>Fields</displayName><description>Fields of indexed documents to be retrieved, in JSON syntax. Ex: ["user.id", "http.response.*", {"field": "@timestamp", "format": "epoch_millis"}]</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-script-fields</name><displayName>Script Fields</displayName><description>Fields to created using script evaluation at query runtime, in JSON syntax. Ex: {"test1": {"script": {"lang": "painless", "source": "doc['price'].value * 2"}}, "test2": {"script": {"lang": "painless", "source": "doc['price'].value * params.factor", "params": {"factor": 2.0}}}}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-query-attribute</name><displayName>Query Attribute</displayName><description>If set, the executed query will be set on each result flowfile in the specified attribute.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-fetch-index</name><displayName>Index</displayName><description>The name of the index to use.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-type</name><displayName>Type</displayName><description>The type of this document (used by Elasticsearch for indexing and searching).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-client-service</name><displayName>Client Service</displayName><description>An Elasticsearch client service to use for running queries.</description><controllerServiceDefinition><className>org.apache.nifi.elasticsearch.ElasticSearchClientService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-client-service-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-split-up-hits</name><displayName>Search Results Split</displayName><description>Output a flowfile containing all hits or one flowfile for each individual hit or one flowfile containing all hits from all paged responses.</description><defaultValue>splitUp-no</defaultValue><allowableValues><allowableValue><displayName>PER_HIT</displayName><value>splitUp-yes</value><description>Flowfile per hit.</description></allowableValue><allowableValue><displayName>PER_RESPONSE</displayName><value>splitUp-no</value><description>Flowfile per response.</description></allowableValue><allowableValue><displayName>PER_QUERY</displayName><value>splitUp-query</value><description>Combine results from all query responses (one flowfile per entire paginated result set of hits). Note that aggregations cannot be paged, they are generated across the entire result set and returned as part of the first page. Results are output with one JSON object per line (allowing hits to be combined from multiple pages without loading all results into memory).</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-format-hits</name><displayName>Search Results Format</displayName><description>Format of Hits output.</description><defaultValue>FULL</defaultValue><allowableValues><allowableValue><displayName>FULL</displayName><value>FULL</value><description>Contains full Elasticsearch Hit, including Document Source and Metadata.</description></allowableValue><allowableValue><displayName>SOURCE_ONLY</displayName><value>SOURCE_ONLY</value><description>Document Source only (where present).</description></allowableValue><allowableValue><displayName>METADATA_ONLY</displayName><value>METADATA_ONLY</value><description>Hit Metadata only.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-split-up-aggregations</name><displayName>Aggregation Results Split</displayName><description>Output a flowfile containing all aggregations or one flowfile for each individual aggregation.</description><defaultValue>splitUp-no</defaultValue><allowableValues><allowableValue><displayName>PER_HIT</displayName><value>splitUp-yes</value><description>Flowfile per hit.</description></allowableValue><allowableValue><displayName>PER_RESPONSE</displayName><value>splitUp-no</value><description>Flowfile per response.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-format-aggregations</name><displayName>Aggregation Results Format</displayName><description>Format of Aggregation output.</description><defaultValue>FULL</defaultValue><allowableValues><allowableValue><displayName>FULL</displayName><value>FULL</value><description>Contains full Elasticsearch Aggregation, including Buckets and Metadata.</description></allowableValue><allowableValue><displayName>BUCKETS_ONLY</displayName><value>BUCKETS_ONLY</value><description>Bucket Content only.</description></allowableValue><allowableValue><displayName>METADATA_ONLY</displayName><value>METADATA_ONLY</value><description>Aggregation Metadata only.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-output-no-hits</name><displayName>Output No Hits</displayName><description>Output a "hits" flowfile even if no hits found for query. If true, an empty "hits" flowfile will be output even if "aggregations" are output.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-pagination-type</name><displayName>Pagination Type</displayName><description>Pagination method to use. Not all types are available for all Elasticsearch versions, check the Elasticsearch docs to confirm which are applicable and recommended for your service.</description><defaultValue>pagination-scroll</defaultValue><allowableValues><allowableValue><displayName>SCROLL</displayName><value>pagination-scroll</value><description>Use Elasticsearch "_scroll" API to page results. Does not accept additional query parameters.</description></allowableValue><allowableValue><displayName>SEARCH_AFTER</displayName><value>pagination-search_after</value><description>Use Elasticsearch "search_after" _search API to page sorted results.</description></allowableValue><allowableValue><displayName>POINT_IN_TIME</displayName><value>pagination-pit</value><description>Use Elasticsearch (7.10+ with XPack) "point in time" _search API to page sorted results.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-pagination-keep-alive</name><displayName>Pagination Keep Alive</displayName><description>Pagination "keep_alive" period. Period Elasticsearch will keep the scroll/pit cursor alive in between requests (this is not the time expected for all pages to be returned, but the maximum allowed time for requests between page retrievals).</description><defaultValue>10 mins</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><dynamicProperties><dynamicProperty><name>The name of a URL query parameter to add</name><value>The value of the URL query parameter</value><description>Adds the specified property name/value as a query parameter in the Elasticsearch URL used for processing. These parameters will override any matching parameters in the query request body. For SCROLL type queries, these parameters are only used in the initial (first page) query as the Elasticsearch Scroll API does not support the same query parameters for subsequent pages of data.</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>aggregations</name><description>Aggregations are routed to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>All flowfiles that fail for reasons unrelated to server availability go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>original</name><description>All original flowfiles that don't cause an error to occur go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>hits</name><description>Search hits are routed to this relationship.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>mime.type</name><description>application/json</description></writesAttribute><writesAttribute><name>aggregation.name</name><description>The name of the aggregation whose results are in the output flowfile</description></writesAttribute><writesAttribute><name>aggregation.number</name><description>The number of the aggregation whose results are in the output flowfile</description></writesAttribute><writesAttribute><name>page.number</name><description>The number of the page (request), starting from 1, in which the results were returned that are in the output flowfile</description></writesAttribute><writesAttribute><name>hit.count</name><description>The number of hits that are in the output flowfile</description></writesAttribute><writesAttribute><name>elasticsearch.query.error</name><description>The error message provided by Elasticsearch if there is an error querying the index.</description></writesAttribute></writesAttributes><eventDriven>true</eventDriven><inputRequirement>INPUT_REQUIRED</inputRequirement><systemResourceConsiderations><systemResourceConsideration><resource>MEMORY</resource><description>Care should be taken on the size of each page because each response from Elasticsearch will be loaded into memory all at once and converted into the resulting flowfiles.</description></systemResourceConsideration></systemResourceConsiderations><seeAlso><see>org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch</see><see>org.apache.nifi.processors.elasticsearch.ConsumeElasticsearch</see><see>org.apache.nifi.processors.elasticsearch.SearchElasticsearch</see></seeAlso></extension><extension><name>org.apache.nifi.processors.elasticsearch.PutElasticsearchJson</name><type>PROCESSOR</type><description>An Elasticsearch put processor that uses the official Elastic REST client libraries. Each FlowFile is treated as a document to be sent to the Elasticsearch _bulk API. Multiple FlowFiles can be batched together into each Request sent to Elasticsearch.</description><tags><tag>json</tag><tag>elasticsearch</tag><tag>elasticsearch5</tag><tag>elasticsearch6</tag><tag>elasticsearch7</tag><tag>elasticsearch8</tag><tag>put</tag><tag>index</tag></tags><properties><property><name>put-es-json-id-attr</name><displayName>Identifier Attribute</displayName><description>The name of the FlowFile attribute containing the identifier for the document. If the Index Operation is "index", this property may be left empty or evaluate to an empty value, in which case the document's identifier will be auto-generated by Elasticsearch. For all other Index Operations, the attribute must evaluate to a non-empty value.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-index-op</name><displayName>Index Operation</displayName><description>The type of the operation used to index (create, delete, index, update, upsert)</description><defaultValue>index</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-fetch-index</name><displayName>Index</displayName><description>The name of the index to use.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-type</name><displayName>Type</displayName><description>The type of this document (used by Elasticsearch for indexing and searching).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-json-script</name><displayName>Script</displayName><description>The script for the document update/upsert. Only applies to Update/Upsert operations. Must be parsable as JSON Object. If left blank, the FlowFile content will be used for document update/upsert</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-json-scripted-upsert</name><displayName>Scripted Upsert</displayName><description>Whether to add the scripted_upsert flag to the Upsert Operation. Forces Elasticsearch to execute the Script whether or not the document exists, defaults to false. If the Upsert Document provided (from FlowFile content) will be empty, but sure to set the Client Service controller service's Suppress Null/Empty Values to Never Suppress or no "upsert" doc will be, included in the request to Elasticsearch and the operation will not create a new document for the script to execute against, resulting in a "not_found" error</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-json-dynamic_templates</name><displayName>Dynamic Templates</displayName><description>The dynamic_templates for the document. Must be parsable as a JSON Object. Requires Elasticsearch 7+</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-batch-size</name><displayName>Batch Size</displayName><description>The preferred number of FlowFiles to send over in a single batch.</description><defaultValue>100</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-json-charset</name><displayName>Character Set</displayName><description>Specifies the character set of the document data.</description><defaultValue>UTF-8</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-client-service</name><displayName>Client Service</displayName><description>An Elasticsearch client service to use for running queries.</description><controllerServiceDefinition><className>org.apache.nifi.elasticsearch.ElasticSearchClientService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-client-service-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-log-error-responses</name><displayName>Log Error Responses</displayName><description>If this is enabled, errors will be logged to the NiFi logs at the error log level. Otherwise, they will only be logged if debug logging is enabled on NiFi as a whole. The purpose of this option is to give the user the ability to debug failed operations without having to turn on debug logging.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-output-error-responses</name><displayName>Output Error Responses</displayName><description>If this is enabled, response messages from Elasticsearch marked as "error" will be output to the "error_responses" relationship.This does not impact the output of flowfiles to the "success" or "errors" relationships</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-json-error-documents</name><displayName>Output Error Documents</displayName><description>If this configuration property is true, the response from Elasticsearch will be examined for failed documents and the FlowFile(s) associated with the failed document(s) will be sent to the "errors" relationship with "elasticsearch.bulk.error" attributes.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-json-not_found-is-error</name><displayName>Treat "Not Found" as Success</displayName><description>If true, "not_found" Elasticsearch Document associated FlowFiles will be routed to the "success" relationship, otherwise to the "errors" relationship. If Output Error Responses is "true" then "not_found" responses from Elasticsearch will be sent to the error_responses relationship</description><defaultValue>true</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>put-es-json-error-documents</propertyName><propertyDisplayName>Output Error Documents</propertyDisplayName><dependentValues><dependentValue>true</dependentValue></dependentValues></dependency></dependencies></property></properties><dynamicProperties><dynamicProperty><name>The name of the Bulk request header</name><value>The value of the Bulk request header</value><description>Prefix: BULK: - adds the specified property name/value as a Bulk request header in the Elasticsearch Bulk API body used for processing. If the value is null or blank, the Bulk header will be omitted for the document operation. These parameters will override any matching parameters in the _bulk request body.</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty><dynamicProperty><name>The name of a URL query parameter to add</name><value>The value of the URL query parameter</value><description>Adds the specified property name/value as a query parameter in the Elasticsearch URL used for processing. These parameters will override any matching parameters in the _bulk request body. If FlowFiles are batched, only the first FlowFile in the batch is used to evaluate property values.</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>retry</name><description>All flowfiles that fail due to server/cluster availability go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>All flowfiles that succeed in being transferred into Elasticsearch go here. Documents received by the Elasticsearch _bulk API may still result in errors on the Elasticsearch side. The Elasticsearch response will need to be examined to determine whether any Document(s)/Record(s) resulted in errors.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>All flowfiles that fail for reasons unrelated to server availability go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>errors</name><description>If a "Output Error Documents" is set, any FlowFile(s) corresponding to Elasticsearch document(s) that resulted in an "error" (within Elasticsearch) will be routed here.</description><autoTerminated>true</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>elasticsearch.put.error</name><description>The error message if there is an issue parsing the FlowFile, sending the parsed document to Elasticsearch or parsing the Elasticsearch response</description></writesAttribute><writesAttribute><name>elasticsearch.bulk.error</name><description>The _bulk response if there was an error during processing the document within Elasticsearch.</description></writesAttribute></writesAttributes><inputRequirement>INPUT_REQUIRED</inputRequirement><systemResourceConsiderations><systemResourceConsideration><resource>MEMORY</resource><description>The Batch of FlowFiles will be stored in memory until the bulk operation is performed.</description></systemResourceConsideration></systemResourceConsiderations><seeAlso><see>org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord</see></seeAlso></extension><extension><name>org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord</name><type>PROCESSOR</type><description>A record-aware Elasticsearch put processor that uses the official Elastic REST client libraries. Each Record within the FlowFile is converted into a document to be sent to the Elasticsearch _bulk APi. Multiple documents can be batched into each Request sent to Elasticsearch. Each document's Bulk operation can be configured using Record Path expressions.</description><tags><tag>json</tag><tag>elasticsearch</tag><tag>elasticsearch5</tag><tag>elasticsearch6</tag><tag>elasticsearch7</tag><tag>elasticsearch8</tag><tag>put</tag><tag>index</tag><tag>record</tag></tags><properties><property><name>put-es-record-index-op</name><displayName>Index Operation</displayName><description>The type of the operation used to index (create, delete, index, update, upsert)</description><defaultValue>index</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-fetch-index</name><displayName>Index</displayName><description>The name of the index to use.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-type</name><displayName>Type</displayName><description>The type of this document (used by Elasticsearch for indexing and searching).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-at-timestamp</name><displayName>@timestamp Value</displayName><description>The value to use as the @timestamp field (required for Elasticsearch Data Streams)</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-client-service</name><displayName>Client Service</displayName><description>An Elasticsearch client service to use for running queries.</description><controllerServiceDefinition><className>org.apache.nifi.elasticsearch.ElasticSearchClientService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-client-service-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-reader</name><displayName>Record Reader</displayName><description>The record reader to use for reading incoming records from flowfiles.</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordReaderFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-batch-size</name><displayName>Batch Size</displayName><description>The number of records to send over in a single batch.</description><defaultValue>100</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-id-path</name><displayName>ID Record Path</displayName><description>A record path expression to retrieve the ID field for use with Elasticsearch. If left blank the ID will be automatically generated by Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-retain-id-field</name><displayName>Retain ID (Record Path)</displayName><description>Whether to retain the existing field used as the ID Record Path.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>put-es-record-id-path</propertyName><propertyDisplayName>ID Record Path</propertyDisplayName></dependency></dependencies></property><property><name>put-es-record-index-op-path</name><displayName>Index Operation Record Path</displayName><description>A record path expression to retrieve the Index Operation field for use with Elasticsearch. If left blank the Index Operation will be determined using the main Index Operation property.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-index-record-path</name><displayName>Index Record Path</displayName><description>A record path expression to retrieve the index field for use with Elasticsearch. If left blank the index will be determined using the main index property.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-type-record-path</name><displayName>Type Record Path</displayName><description>A record path expression to retrieve the type field for use with Elasticsearch. If left blank the type will be determined using the main type property.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-at-timestamp-path</name><displayName>@timestamp Record Path</displayName><description>A RecordPath pointing to a field in the record(s) that contains the @timestamp for the document. If left blank the @timestamp will be determined using the main @timestamp property</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-retain-at-timestamp-field</name><displayName>Retain @timestamp (Record Path)</displayName><description>Whether to retain the existing field used as the @timestamp Record Path.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>put-es-record-at-timestamp-path</propertyName><propertyDisplayName>@timestamp Record Path</propertyDisplayName></dependency></dependencies></property><property><name>put-es-record-script-path</name><displayName>Script Record Path</displayName><description>A RecordPath pointing to a field in the record(s) that contains the script for the document update/upsert. Only applies to Update/Upsert operations. Field must be Map-type compatible (e.g. a Map or a Record) or a String parsable into a JSON Object</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-scripted-upsert-path</name><displayName>Scripted Upsert Record Path</displayName><description>A RecordPath pointing to a field in the record(s) that contains the scripted_upsert boolean flag. Whether to add the scripted_upsert flag to the Upsert Operation. Forces Elasticsearch to execute the Script whether or not the document exists, defaults to false. If the Upsert Document provided (from FlowFile content) will be empty, but sure to set the Client Service controller service's Suppress Null/Empty Values to Never Suppress or no "upsert" doc will be, included in the request to Elasticsearch and the operation will not create a new document for the script to execute against, resulting in a "not_found" error</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-dynamic-templates-path</name><displayName>Dynamic Templates Record Path</displayName><description>A RecordPath pointing to a field in the record(s) that contains the dynamic_templates for the document. Field must be Map-type compatible (e.g. a Map or Record) or a String parsable into a JSON Object. Requires Elasticsearch 7+</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-at-timestamp-date-format</name><displayName>Date Format</displayName><description>Specifies the format to use when writing Date fields. If not specified, the default format 'yyyy-MM-dd' is used. If specified, the value must match the Java Simple Date Format (for example, MM/dd/yyyy for a two-digit month, followed by a two-digit day, followed by a four-digit year, all separated by '/' characters, as in 01/25/2017).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-at-timestamp-time-format</name><displayName>Time Format</displayName><description>Specifies the format to use when writing Time fields. If not specified, the default format 'HH:mm:ss' is used. If specified, the value must match the Java Simple Date Format (for example, HH:mm:ss for a two-digit hour in 24-hour format, followed by a two-digit minute, followed by a two-digit second, all separated by ':' characters, as in 18:04:15).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-at-timestamp-timestamp-format</name><displayName>Timestamp Format</displayName><description>Specifies the format to use when writing Timestamp fields. If not specified, the default format 'yyyy-MM-dd HH:mm:ss' is used. If specified, the value must match the Java Simple Date Format (for example, MM/dd/yyyy HH:mm:ss for a two-digit month, followed by a two-digit day, followed by a four-digit year, all separated by '/' characters; and then followed by a two-digit hour in 24-hour format, followed by a two-digit minute, followed by a two-digit second, all separated by ':' characters, as in 01/25/2017 18:04:15).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-log-error-responses</name><displayName>Log Error Responses</displayName><description>If this is enabled, errors will be logged to the NiFi logs at the error log level. Otherwise, they will only be logged if debug logging is enabled on NiFi as a whole. The purpose of this option is to give the user the ability to debug failed operations without having to turn on debug logging.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-output-error-responses</name><displayName>Output Error Responses</displayName><description>If this is enabled, response messages from Elasticsearch marked as "error" will be output to the "error_responses" relationship.This does not impact the output of flowfiles to the "success" or "errors" relationships</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-error-writer</name><displayName>Result Record Writer</displayName><description>If this configuration property is set, the response from Elasticsearch will be examined for failed records and the failed records will be written to a record set with this record writer service and sent to the "errors" relationship. Successful records will be written to a record set with this record writer service and sent to the "successful_records" relationship.</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordSetWriterFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>put-es-record-not_found-is-error</name><displayName>Treat "Not Found" as Success</displayName><description>If true, "not_found" Elasticsearch Document associated Records will be routed to the "successful_records" relationship, otherwise to the "errors" relationship. If Output Error Responses is "true" then "not_found" responses from Elasticsearch will be sent to the error_responses relationship.</description><defaultValue>true</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>put-es-record-error-writer</propertyName><propertyDisplayName>Result Record Writer</propertyDisplayName></dependency></dependencies></property><property><name>put-es-record-bulk-error-groups</name><displayName>Group Results by Bulk Error Type</displayName><description>If this configuration property is set, the response from Elasticsearch will be examined for _bulk errors. The failed records written to the "errors" relationship will be grouped by error type and the error related to the first record within the FlowFile added to the FlowFile as "elasticsearch.bulk.error". If "Treat "Not Found" as Success" is "false" then records associated with "not_found" Elasticsearch document responses will also be send to the "errors" relationship.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>put-es-record-error-writer</propertyName><propertyDisplayName>Result Record Writer</propertyDisplayName></dependency></dependencies></property></properties><dynamicProperties><dynamicProperty><name>The name of the Bulk request header</name><value>A Record Path expression to retrieve the Bulk request header value</value><description>Prefix: BULK: - adds the specified property name/value as a Bulk request header in the Elasticsearch Bulk API body used for processing. If the Record Path expression results in a null or blank value, the Bulk header will be omitted for the document operation. These parameters will override any matching parameters in the _bulk request body.</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty><dynamicProperty><name>The name of a URL query parameter to add</name><value>The value of the URL query parameter</value><description>Adds the specified property name/value as a query parameter in the Elasticsearch URL used for processing. These parameters will override any matching parameters in the _bulk request body</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>retry</name><description>All flowfiles that fail due to server/cluster availability go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>All flowfiles that succeed in being transferred into Elasticsearch go here. Documents received by the Elasticsearch _bulk API may still result in errors on the Elasticsearch side. The Elasticsearch response will need to be examined to determine whether any Document(s)/Record(s) resulted in errors.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>successful_records</name><description>If a "Result Record Writer" is set, any Record(s) corresponding to Elasticsearch document(s) that did not result in an "error" (within Elasticsearch) will be routed here.</description><autoTerminated>true</autoTerminated></relationship><relationship><name>failure</name><description>All flowfiles that fail for reasons unrelated to server availability go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>errors</name><description>If a "Result Record Writer" is set, any Record(s) corresponding to Elasticsearch document(s) that resulted in an "error" (within Elasticsearch) will be routed here.</description><autoTerminated>true</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>elasticsearch.put.error</name><description>The error message if there is an issue parsing the FlowFile records, sending the parsed documents to Elasticsearch or parsing the Elasticsearch response.</description></writesAttribute><writesAttribute><name>elasticsearch.put.error.count</name><description>The number of records that generated errors in the Elasticsearch _bulk API.</description></writesAttribute><writesAttribute><name>elasticsearch.put.success.count</name><description>The number of records that were successfully processed by the Elasticsearch _bulk API.</description></writesAttribute><writesAttribute><name>elasticsearch.bulk.error</name><description>The _bulk response if there was an error during processing the record within Elasticsearch.</description></writesAttribute></writesAttributes><inputRequirement>INPUT_REQUIRED</inputRequirement><systemResourceConsiderations><systemResourceConsideration><resource>MEMORY</resource><description>The Batch of Records will be stored in memory until the bulk operation is performed.</description></systemResourceConsideration></systemResourceConsiderations><seeAlso><see>org.apache.nifi.processors.elasticsearch.PutElasticsearchJson</see></seeAlso></extension><extension><name>org.apache.nifi.processors.elasticsearch.SearchElasticsearch</name><type>PROCESSOR</type><description>A processor that allows the user to repeatedly run a paginated query (with aggregations) written with the Elasticsearch JSON DSL. Search After/Point in Time queries must include a valid "sort" field. The processor will retrieve multiple pages of results until either no more results are available or the Pagination Keep Alive expiration is reached, after which the query will restart with the first page of results being retrieved.</description><tags><tag>elasticsearch</tag><tag>elasticsearch5</tag><tag>elasticsearch6</tag><tag>elasticsearch7</tag><tag>elasticsearch8</tag><tag>query</tag><tag>scroll</tag><tag>page</tag><tag>search</tag><tag>json</tag></tags><properties><property><name>el-rest-query-definition-style</name><displayName>Query Definition Style</displayName><description>How the JSON Query will be defined for use by the processor.</description><defaultValue>full</defaultValue><allowableValues><allowableValue><displayName>FULL_QUERY</displayName><value>full</value><description>Provide the full Query.</description></allowableValue><allowableValue><displayName>BUILD_QUERY</displayName><value>build</value><description>Build the Query from separate JSON objects.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-query</name><displayName>Query</displayName><description>A query in JSON syntax, not Lucene syntax. Ex: {"query":{"match":{"somefield":"somevalue"}}}. If the query is empty, a default JSON Object will be used, which will result in a "match_all" query in Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>full</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-rest-query-clause</name><displayName>Query Clause</displayName><description>A "query" clause in JSON syntax, not Lucene syntax. Ex: {"match":{"somefield":"somevalue"}}. If the query is empty, a default JSON Object will be used, which will result in a "match_all" query in Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-size</name><displayName>Size</displayName><description>The maximum number of documents to retrieve in the query. If the query is paginated, this "size" applies to each page of the query, not the "size" of the entire result set.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-sort</name><displayName>Sort</displayName><description>Sort results by one or more fields, in JSON syntax. Ex: [{"price" : {"order" : "asc", "mode" : "avg"}}, {"post_date" : {"format": "strict_date_optional_time_nanos"}}]</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-aggs</name><displayName>Aggregations</displayName><description>One or more query aggregations (or "aggs"), in JSON syntax. Ex: {"items": {"terms": {"field": "product", "size": 10}}}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-fields</name><displayName>Fields</displayName><description>Fields of indexed documents to be retrieved, in JSON syntax. Ex: ["user.id", "http.response.*", {"field": "@timestamp", "format": "epoch_millis"}]</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>es-rest-query-script-fields</name><displayName>Script Fields</displayName><description>Fields to created using script evaluation at query runtime, in JSON syntax. Ex: {"test1": {"script": {"lang": "painless", "source": "doc['price'].value * 2"}}, "test2": {"script": {"lang": "painless", "source": "doc['price'].value * params.factor", "params": {"factor": 2.0}}}}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-query-attribute</name><displayName>Query Attribute</displayName><description>If set, the executed query will be set on each result flowfile in the specified attribute.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-fetch-index</name><displayName>Index</displayName><description>The name of the index to use.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-type</name><displayName>Type</displayName><description>The type of this document (used by Elasticsearch for indexing and searching).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-client-service</name><displayName>Client Service</displayName><description>An Elasticsearch client service to use for running queries.</description><controllerServiceDefinition><className>org.apache.nifi.elasticsearch.ElasticSearchClientService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-client-service-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-split-up-hits</name><displayName>Search Results Split</displayName><description>Output a flowfile containing all hits or one flowfile for each individual hit or one flowfile containing all hits from all paged responses.</description><defaultValue>splitUp-no</defaultValue><allowableValues><allowableValue><displayName>PER_HIT</displayName><value>splitUp-yes</value><description>Flowfile per hit.</description></allowableValue><allowableValue><displayName>PER_RESPONSE</displayName><value>splitUp-no</value><description>Flowfile per response.</description></allowableValue><allowableValue><displayName>PER_QUERY</displayName><value>splitUp-query</value><description>Combine results from all query responses (one flowfile per entire paginated result set of hits). Note that aggregations cannot be paged, they are generated across the entire result set and returned as part of the first page. Results are output with one JSON object per line (allowing hits to be combined from multiple pages without loading all results into memory).</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-format-hits</name><displayName>Search Results Format</displayName><description>Format of Hits output.</description><defaultValue>FULL</defaultValue><allowableValues><allowableValue><displayName>FULL</displayName><value>FULL</value><description>Contains full Elasticsearch Hit, including Document Source and Metadata.</description></allowableValue><allowableValue><displayName>SOURCE_ONLY</displayName><value>SOURCE_ONLY</value><description>Document Source only (where present).</description></allowableValue><allowableValue><displayName>METADATA_ONLY</displayName><value>METADATA_ONLY</value><description>Hit Metadata only.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-split-up-aggregations</name><displayName>Aggregation Results Split</displayName><description>Output a flowfile containing all aggregations or one flowfile for each individual aggregation.</description><defaultValue>splitUp-no</defaultValue><allowableValues><allowableValue><displayName>PER_HIT</displayName><value>splitUp-yes</value><description>Flowfile per hit.</description></allowableValue><allowableValue><displayName>PER_RESPONSE</displayName><value>splitUp-no</value><description>Flowfile per response.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-format-aggregations</name><displayName>Aggregation Results Format</displayName><description>Format of Aggregation output.</description><defaultValue>FULL</defaultValue><allowableValues><allowableValue><displayName>FULL</displayName><value>FULL</value><description>Contains full Elasticsearch Aggregation, including Buckets and Metadata.</description></allowableValue><allowableValue><displayName>BUCKETS_ONLY</displayName><value>BUCKETS_ONLY</value><description>Bucket Content only.</description></allowableValue><allowableValue><displayName>METADATA_ONLY</displayName><value>METADATA_ONLY</value><description>Aggregation Metadata only.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-output-no-hits</name><displayName>Output No Hits</displayName><description>Output a "hits" flowfile even if no hits found for query. If true, an empty "hits" flowfile will be output even if "aggregations" are output.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-pagination-type</name><displayName>Pagination Type</displayName><description>Pagination method to use. Not all types are available for all Elasticsearch versions, check the Elasticsearch docs to confirm which are applicable and recommended for your service.</description><defaultValue>pagination-scroll</defaultValue><allowableValues><allowableValue><displayName>SCROLL</displayName><value>pagination-scroll</value><description>Use Elasticsearch "_scroll" API to page results. Does not accept additional query parameters.</description></allowableValue><allowableValue><displayName>SEARCH_AFTER</displayName><value>pagination-search_after</value><description>Use Elasticsearch "search_after" _search API to page sorted results.</description></allowableValue><allowableValue><displayName>POINT_IN_TIME</displayName><value>pagination-pit</value><description>Use Elasticsearch (7.10+ with XPack) "point in time" _search API to page sorted results.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-pagination-keep-alive</name><displayName>Pagination Keep Alive</displayName><description>Pagination "keep_alive" period. Period Elasticsearch will keep the scroll/pit cursor alive in between requests (this is not the time expected for all pages to be returned, but the maximum allowed time for requests between page retrievals).</description><defaultValue>10 mins</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><dynamicProperties><dynamicProperty><name>The name of a URL query parameter to add</name><value>The value of the URL query parameter</value><description>Adds the specified property name/value as a query parameter in the Elasticsearch URL used for processing. These parameters will override any matching parameters in the query request body. For SCROLL type queries, these parameters are only used in the initial (first page) query as the Elasticsearch Scroll API does not support the same query parameters for subsequent pages of data.</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>aggregations</name><description>Aggregations are routed to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>hits</name><description>Search hits are routed to this relationship.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>mime.type</name><description>application/json</description></writesAttribute><writesAttribute><name>aggregation.name</name><description>The name of the aggregation whose results are in the output flowfile</description></writesAttribute><writesAttribute><name>aggregation.number</name><description>The number of the aggregation whose results are in the output flowfile</description></writesAttribute><writesAttribute><name>page.number</name><description>The number of the page (request), starting from 1, in which the results were returned that are in the output flowfile</description></writesAttribute><writesAttribute><name>hit.count</name><description>The number of hits that are in the output flowfile</description></writesAttribute><writesAttribute><name>elasticsearch.query.error</name><description>The error message provided by Elasticsearch if there is an error querying the index.</description></writesAttribute></writesAttributes><triggerSerially>true</triggerSerially><primaryNodeOnly>true</primaryNodeOnly><stateful><description>The pagination state (scrollId, searchAfter, pitId, hitCount, pageCount, pageExpirationTimestamp) is retained in between invocations of this processor until the Scroll/PiT has expired (when the current time is later than the last query execution plus the Pagination Keep Alive interval).</description><scopes><scope>LOCAL</scope></scopes></stateful><inputRequirement>INPUT_FORBIDDEN</inputRequirement><systemResourceConsiderations><systemResourceConsideration><resource>MEMORY</resource><description>Care should be taken on the size of each page because each response from Elasticsearch will be loaded into memory all at once and converted into the resulting flowfiles.</description></systemResourceConsideration></systemResourceConsiderations><seeAlso><see>org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch</see><see>org.apache.nifi.processors.elasticsearch.ConsumeElasticsearch</see></seeAlso><defaultSchedule><strategy>TIMER_DRIVEN</strategy><period>1 min</period><concurrentTasks>1</concurrentTasks></defaultSchedule></extension><extension><name>org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch</name><type>PROCESSOR</type><description>Update documents in an Elasticsearch index using a query. The query can be loaded from a flowfile body or from the Query parameter. The loaded Query can contain any JSON accepted by Elasticsearch's _update_by_query API, for example a "query" object to identify what documents are to be updated, plus a "script" to define the updates to perform.</description><tags><tag>elastic</tag><tag>elasticsearch</tag><tag>elasticsearch5</tag><tag>elasticsearch6</tag><tag>elasticsearch7</tag><tag>elasticsearch8</tag><tag>update</tag><tag>query</tag></tags><properties><property><name>el-rest-query-definition-style</name><displayName>Query Definition Style</displayName><description>How the JSON Query will be defined for use by the processor.</description><defaultValue>full</defaultValue><allowableValues><allowableValue><displayName>FULL_QUERY</displayName><value>full</value><description>Provide the full Query.</description></allowableValue><allowableValue><displayName>BUILD_QUERY</displayName><value>build</value><description>Build the Query from separate JSON objects.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-query</name><displayName>Query</displayName><description>A query in JSON syntax, not Lucene syntax. Ex: {"query":{"match":{"somefield":"somevalue"}}}. If this parameter is not set, the query will be read from the flowfile content. If the query (property and flowfile content) is empty, a default empty JSON Object will be used, which will result in a "match_all" query in Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>full</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-rest-query-clause</name><displayName>Query Clause</displayName><description>A "query" clause in JSON syntax, not Lucene syntax. Ex: {"match":{"somefield":"somevalue"}}. If the query is empty, a default JSON Object will be used, which will result in a "match_all" query in Elasticsearch.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-rest-script</name><displayName>Script</displayName><description>A "script" to execute during the operation, in JSON syntax. Ex: {"source": "ctx._source.count++", "lang": "painless"}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>el-rest-query-definition-style</propertyName><propertyDisplayName>Query Definition Style</propertyDisplayName><dependentValues><dependentValue>build</dependentValue></dependentValues></dependency></dependencies></property><property><name>el-query-attribute</name><displayName>Query Attribute</displayName><description>If set, the executed query will be set on each result flowfile in the specified attribute.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-fetch-index</name><displayName>Index</displayName><description>The name of the index to use.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-type</name><displayName>Type</displayName><description>The type of this document (used by Elasticsearch for indexing and searching).</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>el-rest-client-service</name><displayName>Client Service</displayName><description>An Elasticsearch client service to use for running queries.</description><controllerServiceDefinition><className>org.apache.nifi.elasticsearch.ElasticSearchClientService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-elasticsearch-client-service-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><dynamicProperties><dynamicProperty><name>The name of a URL query parameter to add</name><value>The value of the URL query parameter</value><description>Adds the specified property name/value as a query parameter in the Elasticsearch URL used for processing. These parameters will override any matching parameters in the query request body</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>retry</name><description>All flowfiles that fail due to server/cluster availability go to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>If the "by query" operation succeeds, and a flowfile was read, it will be sent to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>If the "by query" operation fails, and a flowfile was read, it will be sent to this relationship.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>elasticsearch.update.took</name><description>The amount of time that it took to complete the update operation in ms.</description></writesAttribute><writesAttribute><name>elasticsearch.update.error</name><description>The error message provided by Elasticsearch if there is an error running the update.</description></writesAttribute></writesAttributes><inputRequirement>INPUT_ALLOWED</inputRequirement></extension></extensions></extensionManifest>