Write your first script
Serverless Stack
Painless is the default scripting language for Elasticsearch. It is secure, performant, and provides a natural syntax for anyone with a little coding experience.
A Painless script is structured as one or more statements and optionally has one or more user-defined functions at the beginning. A script must always have at least one statement.
The Painless execute API provides the ability to test a script with simple user-defined parameters and receive a result. Let’s start with a complete script and review its constituent parts.
Index a document
Index a document with a single field so that we have some data to work with:
PUT my-index-000001/_doc/1{ "my_field": 5 }Operate on a field
You can now construct a script that operates on that field and then evaluate the script as part of a query. The following query uses the
script_fieldsparameter of the search API to retrieve a script valuation.The components of this script are detailed in later pages. For now, note that the script takes
my_fieldas input and operates on it.GET my-index-000001/_search{ "script_fields": { "my_doubled_field": { "script": { "source": "doc['my_field'].value * params['multiplier']", "params": { "multiplier": 2 } } } } }scriptobjectscriptsource
The
scriptis a standard JSON object that defines scripts under most APIs in Elasticsearch. This object requiressourceto define the script itself. Sincescriptisn't set, the scripting language is interpreted as being Painless, by default.