elasticsearch/docs/reference/ingest/processors/terminate.asciidoc
Pete Gillin 43e5258b3c
Add a terminate ingest processor (#114157)
This processor simply causes any remaining processors in the pipeline
to be skipped. It will normally be executed conditionally using the
`if` option. (If this pipeline is being called from another pipeline,
the calling pipeline is *not* terminated.)

For example, this:

```
POST /_ingest/pipeline/_simulate
{
  "pipeline":
  {
    "description": "Appends just 'before' to the steps field if the number field
 is present, or both 'before' and 'after' if not",
    "processors": [
      {
        "append": {
          "field": "steps",
          "value": "before"
        }
      },
      {
        "terminate": {
          "if": "ctx.error != null"
        }
      },
      {
        "append": {
          "field": "steps",
          "value": "after"
        }
      }
    ]
  },
  "docs": [
    {
      "_index": "index",
      "_id": "doc1",
      "_source": {
        "name": "okay",
        "steps": []
      }
    },
    {
      "_index": "index",
      "_id": "doc2",
      "_source": {
        "name": "bad",
        "error": "oh no",
        "steps": []
      }
    }
  ]
}
```

returns something like this:

```
{
  "docs": [
    {
      "doc": {
        "_index": "index",
        "_version": "-3",
        "_id": "doc1",
        "_source": {
          "name": "okay",
          "steps": [
            "before",
            "after"
          ]
        },
        "_ingest": {
          "timestamp": "2024-10-04T16:25:20.448881Z"
        }
      }
    },
    {
      "doc": {
        "_index": "index",
        "_version": "-3",
        "_id": "doc2",
        "_source": {
          "name": "bad",
          "error": "oh no",
          "steps": [
            "before"
          ]
        },
        "_ingest": {
          "timestamp": "2024-10-04T16:25:20.448932Z"
        }
      }
    }
  ]
}
```
2024-10-08 17:39:53 +01:00

30 lines
774 B
Text

[[terminate-processor]]
=== Terminate processor
++++
<titleabbrev>Terminate</titleabbrev>
++++
Terminates the current ingest pipeline, causing no further processors to be run.
This will normally be executed conditionally, using the `if` option.
If this pipeline is being called from another pipeline, the calling pipeline is *not* terminated.
[[terminate-options]]
.Terminate Options
[options="header"]
|======
| Name | Required | Default | Description
include::common-options.asciidoc[]
|======
[source,js]
--------------------------------------------------
{
"description" : "terminates the current pipeline if the error field is present",
"terminate": {
"if": "ctx.error != null"
}
}
--------------------------------------------------
// NOTCONSOLE