Skip to main content
Version: 3.0 (next)

Elasticsearch Nodes

Elasticsearch is a distributed search and analytics engine built for scalability, full-text search, and real-time data analysis. MaestroHub provides four dedicated nodes for searching, indexing, retrieving, and deleting documents within your pipelines.

Configuration Quick Reference​

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the connection profile, function, configure function parameters with expression support, and optionally override timeout.
SettingsDescription, Timeout (seconds), Retry on Timeout, Retry on Fail, On ErrorNode description, maximum execution time, retry behavior on timeout or failure, and error handling strategy. All execution settings default to pipeline-level values.
Elasticsearch Search node configuration

Elasticsearch Search Node

Elasticsearch Search Node​

Execute full-text searches using Elasticsearch Query DSL with pagination support.

Supported Function Types:

Function NamePurposeCommon Use Cases
SearchQuery documents using Elasticsearch Query DSL with optional size and from parameters for paginationLog analysis, dashboard data retrieval, filtered lookups, aggregation queries

Output Schema:

{
"result": {
"hits": [
{
"_index": "logs-2024",
"_id": "abc123",
"_score": 1.5,
"_source": { /* document fields */ }
}
],
"totalHits": 150,
"raw": { /* the whole search response — aggregations included */ }
}
}

hits is the page of matching documents as Elasticsearch returns them; totalHits is the total number of matches, which can exceed the page when size caps it. Aggregations and everything else the search returned are under raw.


Elasticsearch Index node configuration

Elasticsearch Index Node

Elasticsearch Index Node​

Create or update documents in an Elasticsearch index with optional document ID specification.

Supported Function Types:

Function NamePurposeCommon Use Cases
IndexInsert or update a document with JSON body and optional document IDSensor data ingestion, audit logging, event archival, data synchronization

Output Schema:

{
"result": {
"_index": "sensors-2024",
"_id": "sensor-001",
"result": "created",
"version": 1
}
}

The result field indicates whether the document was created (new) or updated (existing ID). version is the document's version after the write.


Elasticsearch Get node configuration

Elasticsearch Get Node

Elasticsearch Get Node​

Retrieve a single document by its unique identifier for fast, direct lookups.

Supported Function Types:

Function NamePurposeCommon Use Cases
GetRetrieve a document by index and document IDConfiguration lookups, device registry queries, cache hits, existence checks

Output Schema:

{
"result": {
"_index": "device-registry",
"_id": "device-001",
"found": true,
"version": 3,
"_source": {
"name": "Temperature Sensor",
"location": "Building A",
"thresholds": { "min": 15, "max": 30 }
}
}
}

When the document doesn't exist, found is false and only _id accompanies it — _index, _source and version are not present.


Elasticsearch Delete node configuration

Elasticsearch Delete Node

Elasticsearch Delete Node​

Remove a document from an Elasticsearch index by its unique identifier.

Supported Function Types:

Function NamePurposeCommon Use Cases
DeleteRemove a document by index and document IDExpired record cleanup, processed queue removal, data lifecycle management

Output Schema:

{
"result": {
"_index": "queue-items",
"_id": "item-789",
"result": "deleted"
}
}

The result field is deleted if the document existed and was removed, or not_found if the document didn't exist — in which case _index is not present.


Output​

Every Elasticsearch node delivers its data under result, and execution facts (success, functionId, durationMs, timestamp) under _metadata:

NodeExpressionDescription
Search$node["Name"].result.hitsThe matching documents as Elasticsearch returns them — each with _index, _id, _score and the document under _source. $node["Name"].result.hits[0]._source.<field> reads a value
$node["Name"].result.totalHitsThe total number of matches; present unless the query sets track_total_hits to false
$node["Name"].result.rawThe whole search response — $node["Name"].result.raw.aggregations reads an aggregation
Index$node["Name"].result._id, $node["Name"].result._indexThe document's id (given or generated) and the index written to
$node["Name"].result.resultcreated for a new document, updated when the id already existed
$node["Name"].result.versionThe document's version after the write
Get$node["Name"].result.foundWhether the document exists
$node["Name"].result._sourceThe document — only when found, with _index and version
Delete$node["Name"].result.resultdeleted when the document existed, not_found when it did not

The call's own facts ride along under _metadata next to the four every connected node carries: $node["Name"]._metadata.index on every node, $node["Name"]._metadata.hitCount after a Search, $node["Name"]._metadata.documentId after an Index, Get or Delete, and _metadata.method, _metadata.connectionId and _metadata.protocol naming the operation and the connection it ran over.