35 lines
1.5 KiB
Plaintext
35 lines
1.5 KiB
Plaintext
[[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.
|