Painless is a simple, secure scripting language designed specifically for use with Elasticsearch. It is the default scripting language for Elasticsearch and can safely be used for inline and stored scripts. For a detailed description of the Painless syntax and language features, see the {painless}/painless-lang-spec.html[Painless Language Specification].
You can use Painless anywhere scripts can be used in Elasticsearch. Painless provides:
-
Fast performance: Painless scripts run several times faster than the alternatives.
-
Safety: Fine-grained whitelist with method call/field granularity. See the {painless}/painless-api-reference.html[Painless API Reference] for a complete list of available classes and methods.
-
Optional typing: Variables and parameters can use explicit types or the dynamic
def
type. -
Syntax: Extends Java’s syntax to provide Groovy-style scripting language features that make scripts easier to write.
-
Optimizations: Designed specifically for Elasticsearch scripting.