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
| Field | What you choose | Details |
|---|---|---|
| Parameters | Connection, Function, Function Parameters, Timeout Override | Select the connection profile, function, configure function parameters with expression support, and optionally override timeout. |
| Settings | Description, Timeout (seconds), Retry on Timeout, Retry on Fail, On Error | Node 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
Elasticsearch Search Node
Execute full-text searches using Elasticsearch Query DSL with pagination support.
Supported Function Types:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
| Search | Query documents using Elasticsearch Query DSL with optional size and from parameters for pagination | Log 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
Elasticsearch Index Node
Create or update documents in an Elasticsearch index with optional document ID specification.
Supported Function Types:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
| Index | Insert or update a document with JSON body and optional document ID | Sensor 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
Elasticsearch Get Node
Retrieve a single document by its unique identifier for fast, direct lookups.
Supported Function Types:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
| Get | Retrieve a document by index and document ID | Configuration 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
Elasticsearch Delete Node
Remove a document from an Elasticsearch index by its unique identifier.
Supported Function Types:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
| Delete | Remove a document by index and document ID | Expired 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:
| Node | Expression | Description |
|---|---|---|
| Search | $node["Name"].result.hits | The 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.totalHits | The total number of matches; present unless the query sets track_total_hits to false | |
$node["Name"].result.raw | The whole search response — $node["Name"].result.raw.aggregations reads an aggregation | |
| Index | $node["Name"].result._id, $node["Name"].result._index | The document's id (given or generated) and the index written to |
$node["Name"].result.result | created for a new document, updated when the id already existed | |
$node["Name"].result.version | The document's version after the write | |
| Get | $node["Name"].result.found | Whether the document exists |
$node["Name"].result._source | The document — only when found, with _index and version | |
| Delete | $node["Name"].result.result | deleted 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.