123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- [[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 <<modules-scripting-painless, Painless Scripting Language>>.
- 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
- |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 for
- certain 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/expression.asciidoc[]
- include::scripting/native.asciidoc[]
- include::scripting/advanced-scripting.asciidoc[]
|