| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | [[modules-scripting]]= Scripting[partintro]--With scripting, you can evaluate custom expressions in {es}. For example, youcan use a script to return a computed value as a field or evaluate a customscore for a query.The default scripting language is <<modules-scripting-painless,Painless>>.Additional `lang` plugins are available to run scripts written in otherlanguages. You can specify the language of the script anywhere that scripts run.[discrete][[scripting-available-languages]]== Available scripting languagesPainless is purpose-built for {es}, can be used for any purpose in thescripting APIs, and provides the most flexibility. The other languages are lessflexible, but can be useful for specific purposes.[cols="<,<,<,<",options="header",]|========|Language    |Sandboxed    |Required plugin    |Purpose|<<modules-scripting-painless,`painless`>>    |{yes-icon}    |Built-in    |Purpose-built for {es}|<<modules-scripting-expression, `expression`>>    |{yes-icon}    |Built-in    |Fast custom ranking and sorting|<<search-template, `mustache`>>    |{yes-icon}    |Built-in    |Templates|<<modules-scripting-engine, `java`>>    |{no-icon}    |You write it!    |Expert API|========--include::scripting/painless.asciidoc[]include::scripting/using.asciidoc[]include::scripting/access-fields.asciidoc[]include::scripting/common-script-uses.asciidoc[]include::scripting/fields.asciidoc[]include::scripting/security.asciidoc[]include::scripting/expression.asciidoc[]include::scripting/engine.asciidoc[]
 |