Link Search Menu Expand Document Documentation Menu

Join processor

The join processor concatenates the elements of an array into a single string value, using a specified separator between each element. It throws an exception if the provided input is not an array.

The following is the syntax for the join processor:

{
  "join": {
    "field": "field_name",
    "separator": "separator_string"
  }
}

Configuration parameters

Image for: Configuration parameters

The following table lists the required and optional parameters for the join processor.

Parameter Required/Optional Description
field Required The name of the field to which the join operator is applied. Must be an array.
separator Required A string separator to use when joining field values. If not specified, then the values are concatenated without a separator.
target_field Optional The field to assign the cleaned value to. If not specified, then the field is updated in place.
description Optional A description of the processor’s purpose or configuration.
if Optional Specifies to conditionally execute the processor.
ignore_failure Optional Specifies to ignore failures for the processor. See Handling pipeline failures.
on_failure Optional Specifies to handle failures for the processor. See Handling pipeline failures.
tag Optional An identifier for the processor. Useful for debugging and metrics.

Using the processor

Image for: Using the processor

Follow these steps to use the processor in a pipeline.

Step 1: Create a pipeline

The following query creates a pipeline named example-join-pipeline that uses the join processor to concatenate all the values of the uri field, separating them with the specified separator /:

PUT _ingest/pipeline/example-join-pipeline  
{  
  "description": "Example pipeline using the join processor",  
  "processors": [  
    {  
      "join": {  
        "field": "uri",  
        "separator": "/"  
      }  
    }  
  ]  
}  

Step 2 (Optional): Test the pipeline

It is recommended that you test your pipeline before you ingest documents.

To test the pipeline, run the following query:

POST _ingest/pipeline/example-join-pipeline/_simulate  
{  
  "docs": [  
    {  
      "_source": {  
        "uri": [  
          "app",  
          "home",  
          "overview"  
        ]  
      }  
    }  
  ]  
}

Response

The following example response confirms that the pipeline is working as expected:

{  
  "docs": [  
    {  
      "doc": {  
        "_index": "_index",  
        "_id": "_id",  
        "_source": {  
          "uri": "app/home/overview"  
        },  
        "_ingest": {  
          "timestamp": "2024-05-24T02:16:01.00659117Z"  
        }  
      }  
    }  
  ]  
}  

Step 3: Ingest a document

The following query ingests a document into an index named testindex1:

POST testindex1/_doc/1?pipeline=example-join-pipeline  
{  
  "uri": [  
    "app",  
    "home",  
    "overview"  
  ]  
} 

Step 4 (Optional): Retrieve the document

To retrieve the document, run the following query:

GET testindex1/_doc/1