| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | [[modules-scripting]]== ScriptingThe scripting module enables you to use scripts to evaluate customexpressions. For example, you could use a script to return "script fields"as part of a search request or evaluate a custom score for a query.The default scripting language is <<modules-scripting-painless, `Painless`>>.Additional `lang` plugins enable you to run scripts written in other languages.Everywhere a script can be used, you can include a `lang` parameterto specify the language of the script.[float]=== General-purpose languages:These languages can be used for any purpose in the scripting APIs,and give the most flexibility.[cols="<,<,<",options="header",]|=======================================================================|Language    |Sandboxed    |Required plugin|<<modules-scripting-painless, `painless`>>    |yes    |built-in|<<modules-scripting-groovy, `groovy`>>    |<<modules-scripting-security, no>>    |built-in|{plugins}/lang-javascript.html[`javascript`]    |<<modules-scripting-security, no>>    |{plugins}/lang-javascript.html[`lang-javascript`]|{plugins}/lang-python.html[`python`]    |<<modules-scripting-security, no>>    |{plugins}/lang-python.html[`lang-python`]|=======================================================================[float]=== Special-purpose languages:These languages are less flexible, but typically have higher performance forcertain tasks.[cols="<,<,<,<",options="header",]|=======================================================================|Language    |Sandboxed    |Required plugin    |Purpose|<<modules-scripting-expression, `expression`>>    |yes    |built-in    |fast custom ranking and sorting|<<search-template, `mustache`>>    |yes    |built-in    |templates|<<modules-scripting-native, `java`>>    |n/a    |you write it!    |expert API|=======================================================================[WARNING].Scripts and security=================================================Languages that are sandboxed are designed with security in mind. However, non-sandboxed languages can be a security issue, please read<<modules-scripting-security, Scripting and security>> for more details.=================================================include::scripting/using.asciidoc[]include::scripting/fields.asciidoc[]include::scripting/security.asciidoc[]include::scripting/groovy.asciidoc[]include::scripting/painless.asciidoc[]include::scripting/painless-syntax.asciidoc[]include::scripting/expression.asciidoc[]include::scripting/native.asciidoc[]include::scripting/advanced-scripting.asciidoc[]
 |