[[modules-scripting]] == Scripting The scripting module enables you to use scripts to evaluate custom expressions. 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. TIP: Elasticsearch now has a built-in scripting language called _Painless_ that provides a more secure alternative for implementing scripts for Elasticsearch. We encourage you to try it out -- for more information, see <>. The default scripting language is http://groovy-lang.org/[groovy]. Additional `lang` plugins enable you to run scripts written in other languages. Everywhere a script can be used, you can include a `lang` parameter to 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 |Required plugin |<> |built-in |<> |built-in |{plugins}/lang-javascript.html[`javascript`] |{plugins}/lang-javascript.html[`lang-javascript`] |{plugins}/lang-python.html[`python`] |{plugins}/lang-python.html[`lang-python`] |======================================================================= [float] === Special-purpose languages: These languages are less flexible, but typically have higher performance for certain tasks. [cols="<,<,<,<",options="header",] |======================================================================= |Language |Required plugin |Purpose |<> |built-in |fast custom ranking and sorting |<> |built-in |templates |<> |you write it! |expert API |======================================================================= ================================================= include::scripting/using.asciidoc[] include::scripting/fields.asciidoc[] include::scripting/security.asciidoc[] include::scripting/groovy.asciidoc[] include::scripting/painless.asciidoc[] include::scripting/expression.asciidoc[] include::scripting/native.asciidoc[] include::scripting/advanced-scripting.asciidoc[]