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

[[painless-features]]
You can use Painless anywhere scripts can be used in Elasticsearch. Painless
provides:

* Fast performance: Painless scripts https://benchmarks.elastic.co/index.html#search_qps_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 http://groovy-lang.org/index.html[
Groovy-style] scripting language features that make scripts easier to write.

* Optimizations: Designed specifically for Elasticsearch scripting.
