Painless Scripting Language


Painless Scripting Languageedit

The Painless scripting language is new and is still marked as experimental. The syntax or API may be changed in the future in non-backwards compatible ways if required.

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 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 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.

Ready to start scripting with Painless? See Getting Started with Painless in the guide to the Painless Scripting Language.