12345678910111213141516171819202122232425262728293031323334 |
- [[modules-scripting-painless]]
- == Painless scripting language
- _Painless_ is a performant, secure scripting language designed specifically for
- {es}. You can use Painless to safely write inline and stored scripts anywhere
- scripts are supported in {es}.
- [[painless-features]]
- Painless provides numerous capabilities that center around the following
- core principles:
- * **Safety**: Ensuring the security of your cluster is of utmost importance. To
- that end, Painless uses a fine-grained allowlist with a granularity down to the
- members of a class. Anything that is not part of the allowlist results in a
- compilation error. See the
- {painless}/painless-api-reference.html[Painless API Reference]
- for a complete list of available classes, methods, and fields per script
- context.
- * **Performance**: Painless compiles directly into JVM bytecode to take
- advantage of all possible optimizations that the JVM provides. Also, Painless
- typically avoids features that require additional slower checks at runtime.
- * **Simplicity**: Painless implements a syntax with a natural familiarity to
- anyone with some basic coding experience. Painless uses a subset of Java syntax
- with some additional improvements to enhance readability and remove
- boilerplate.
- [discrete]
- === Start scripting
- Ready to start scripting with Painless? Learn how to
- <<modules-scripting-using,write your first script>>.
- If you're already familiar with Painless, see the
- {painless}/painless-lang-spec.html[Painless Language Specification] for a
- detailed description of the Painless syntax and language features.
|