69 lines
2.9 KiB
Plaintext
69 lines
2.9 KiB
Plaintext
|
[[transform-script]]
|
||
|
=== Script Transform
|
||
|
|
||
|
A <<transform, Transform>> that executes a script on the current payload in the
|
||
|
watch execution context and replaces it with a newly generated one. The following
|
||
|
snippet shows how a simple script transform can be defined on the watch level:
|
||
|
|
||
|
TIP: The `script` transform is often useful when used in combination with the
|
||
|
<<transform-search, `search`>> transform, where the script can extract only
|
||
|
the significant data from a search result, and by that, keep the payload
|
||
|
minimal. This can be achieved with the <<transform-chain, `chain`>>
|
||
|
transform.
|
||
|
|
||
|
|
||
|
[source,js]
|
||
|
--------------------------------------------------
|
||
|
{
|
||
|
"transform" : {
|
||
|
"script" : "return [ 'time' : ctx.trigger.scheduled_time ]" <1>
|
||
|
}
|
||
|
}
|
||
|
--------------------------------------------------
|
||
|
<1> A simple `painless` script that creates a new payload with a single `time`
|
||
|
field holding the scheduled time.
|
||
|
|
||
|
NOTE: The executed script may either return a valid model that is the equivalent
|
||
|
of a Java(TM) Map or a JSON object (you will need to consult the
|
||
|
documentation of the specific scripting language to find out what this
|
||
|
construct is). Any other value that is returned will be assigned and
|
||
|
accessible to/via the `_value` variable.
|
||
|
|
||
|
The `script` attribute may hold a string value in which case it will be treated
|
||
|
as an inline script and the default elasticsearch script languages will be assumed
|
||
|
(as described in {ref}/modules-scripting.html#modules-scripting[here]). You can
|
||
|
use the other scripting languages supported by Elasticsearch. For this, you need
|
||
|
to set the `script` field to an object describing the script and its language.
|
||
|
The following table lists the possible settings that can be configured:
|
||
|
|
||
|
[[transform-script-settings]]
|
||
|
.Script Transform Settings
|
||
|
[options="header,footer"]
|
||
|
|======
|
||
|
| Name |Required | Default | Description
|
||
|
|
||
|
| `inline` | yes* | - | When using an inline script, this field holds
|
||
|
the script itself.
|
||
|
|
||
|
| `file` | yes* | - | When referring to a script file, this field
|
||
|
holds the name of the file.
|
||
|
|
||
|
| `id` | yes* | - | When referring to a stored script, this
|
||
|
field holds the id of the script.
|
||
|
|
||
|
| `lang` | no | `painless` | The script language
|
||
|
|
||
|
| `params` | no | - | Additional parameters/variables that are
|
||
|
accessible by the script
|
||
|
|
||
|
4+d| * When using the object notation, only one of `inline`, `file` or `id`
|
||
|
fields must be defined
|
||
|
|======
|
||
|
|
||
|
When using the object notation of the script, one (and only one) of `inline`,
|
||
|
`file` or `id` fields must be defined
|
||
|
|
||
|
NOTE: In addition to the provided `params`, the scripts also have access to the
|
||
|
<<watch-execution-context, Standard Watch Execution Context Parameters>>.
|
||
|
|