NOTE: You are looking at documentation for an older release. For the latest information, see the current release documentation.
Conditionals with the Regular Expressions
editConditionals with the Regular Expressions
editThe if
conditional is implemented as a Painless script, which requires
explicit support for regular expressions.
script.painless.regex.enabled: true
must be set in elasticsearch.yml
to use regular
expressions in the if
condition.
If regular expressions are enabled, operators such as =~
can be used against a /pattern/
for conditions.
For example:
PUT _ingest/pipeline/check_url { "processors": [ { "set": { "if": "ctx.href?.url =~ /^http[^s]/", "field": "href.insecure", "value": true } } ] }
POST test/_doc/1?pipeline=check_url { "href": { "url": "http://www.elastic.co/" } }
Results in:
{ "_index": "test", "_type": "_doc", "_id": "1", "_version": 1, "_seq_no": 60, "_primary_term": 1, "found": true, "_source": { "href": { "insecure": true, "url": "http://www.elastic.co/" } } }
Regular expressions can be expensive and should be avoided if viable alternatives exist.
For example in this case startsWith
can be used to get the same result
without using a regular expression:
PUT _ingest/pipeline/check_url { "processors": [ { "set": { "if": "ctx.href?.url != null && ctx.href.url.startsWith('http://')", "field": "href.insecure", "value": true } } ] }