Run a script
- POST also GET /_scripts/painless/_execute
Runs a script and returns a result. Use this API to build and test scripts, such as when defining a script for a runtime field. This API requires very few dependencies and is especially useful if you don't have permissions to write documents on a cluster.
The API uses several contexts, which control how scripts are run, what variables are available at runtime, and what the return type is.
Each context requires a script, but additional parameters depend on the context you're using for that script.
Request
-
contextPainlessContext · default: painless_test -
The context that the script should run in. NOTE: Result ordering in the field contexts is not guaranteed.
Supported values include:
painless_test: The default context if no other context is specified.filter: Treats scripts as if they were run inside a script query.score: Treats scripts as if they were run inside ascript_scorefunction in afunction_scorequery.boolean_field: The context for boolean fields. The script returns atrueorfalseresponse.date_field: The context for date fields.emittakes a long value and the script returns a sorted list of dates.double_field: The context for double numeric fields. The script returns a sorted list of double values.geo_point_field: The context for geo-point fields.emittakes two double parameters, the latitude and longitude values, and the script returns an object in GeoJSON format containing the coordinates for the geo point.ip_field: The context foripfields. The script returns a sorted list of IP addresses.keyword_field: The context for keyword fields. The script returns a sorted list of string values.long_field: The context for long numeric fields. The script returns a sorted list of long values.composite_field: The context for composite runtime fields. The script returns a map of values.
-
Values:
painless_testfilterscoreboolean_fielddate_fielddouble_fieldgeo_point_fieldip_fieldkeyword_fieldlong_fieldcomposite_field -
context_setupPainlessContextSetup -
Additional parameters for the
context. NOTE: This parameter is required for all contexts exceptpainless_test, which is the default if no value is provided forcontext. -
documentobjectrequired -
Document that's temporarily indexed in-memory and accessible from the script.
-
indexstring IndexNamerequired -
Index containing a mapping that's compatible with the indexed document. You may specify a remote index by prefixing the index with the remote cluster alias. For example,
remote1:my_indexindicates that you want to run the painless script against the "my_index" index on the "remote1" cluster. This request will be forwarded to the "remote1" cluster if you have configured a connection to that remote cluster.NOTE: Wildcards are not accepted in the index expression for this endpoint. The expression
*:myindexwill return the error "No such remote cluster" and the expressionlogs*orremote1:logs*will return the error "index not found". -
queryQueryContainer -
Use this parameter to specify a query for computing a score.
-
scriptstring Script -
The Painless script to run.