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 } } } } }- scriptobject
- scriptsource
 - The - scriptis a standard JSON object that defines scripts under most APIs in Elasticsearch. This object requires- sourceto define the script itself. Since- scriptisn't set, the scripting language is interpreted as being Painless, by default.