Conditional Execution in Pipelines

edit

Conditional Execution in Pipelines

edit

Each processor allows for an optional if condition to determine if that processor should be executed or skipped. The value of the if is a Painless script that needs to evaluate to true or false.

For example the following processor will drop the document (i.e. not index it) if the input document has a field named network_name and it is equal to Guest.

PUT _ingest/pipeline/drop_guests_network
{
  "processors": [
    {
      "drop": {
        "if": "ctx.network_name == 'Guest'"
      }
    }
  ]
}

Using that pipeline for an index request:

POST test/_doc/1?pipeline=drop_guests_network
{
  "network_name" : "Guest"
}

Results in nothing indexed since the conditional evaluated to true.

{
  "_index": "test",
  "_type": "_doc",
  "_id": "1",
  "_version": -3,
  "result": "noop",
  "_shards": {
    "total": 0,
    "successful": 0,
    "failed": 0
  }
}