[[painless-contexts]]
== Painless contexts

A Painless script is evaluated within a context. Each context has values that
are available as local variables, an allowlist that controls the available
classes, and the methods and fields within those classes (API), and
if and what type of value is returned.

Painless scripts typically run within one of the contexts in the following
table. Before using a Painless context, <<painless-context-examples,configure the example data>>. Each context example is configured to operate on this data.

[options="header",cols="<1,<1,<1"]
|====
| Name                              | Painless Documentation
                                    | Elasticsearch Documentation
| Runtime field                     | <<painless-runtime-fields-context,Painless Documentation>>
                                    | {ref}/runtime.html[Elasticsearch Documentation]

| Ingest processor                  | <<painless-ingest-processor-context, Painless Documentation>>
                                    | {ref}/script-processor.html[Elasticsearch Documentation]
| Update                            | <<painless-update-context, Painless Documentation>>
                                    | {ref}/docs-update.html[Elasticsearch Documentation]
| Update by query                   | <<painless-update-by-query-context, Painless Documentation>>
                                    | {ref}/docs-update-by-query.html[Elasticsearch Documentation]
| Reindex                           | <<painless-reindex-context, Painless Documentation>>
                                    | {ref}/docs-reindex.html[Elasticsearch Documentation]
| Sort                              | <<painless-sort-context, Painless Documentation>>
                                    | {ref}/sort-search-results.html[Elasticsearch Documentation]
| Similarity                        | <<painless-similarity-context, Painless Documentation>>
                                    | {ref}/index-modules-similarity.html[Elasticsearch Documentation]
| Weight                            | <<painless-weight-context, Painless Documentation>>
                                    | {ref}/index-modules-similarity.html[Elasticsearch Documentation]
| Score                             | <<painless-score-context, Painless Documentation>>
                                    | {ref}/query-dsl-function-score-query.html[Elasticsearch Documentation]
| Field                             | <<painless-field-context, Painless Documentation>>
                                    | {ref}/search-fields.html#script-fields[Elasticsearch Documentation]
| Filter                            | <<painless-filter-context, Painless Documentation>>
                                    | {ref}/query-dsl-script-query.html[Elasticsearch Documentation]
| Minimum should match              | <<painless-min-should-match-context, Painless Documentation>>
                                    | {ref}/query-dsl-terms-set-query.html[Elasticsearch Documentation]
| Metric aggregation initialization | <<painless-metric-agg-init-context, Painless Documentation>>
                                    | {ref}/search-aggregations-metrics-scripted-metric-aggregation.html[Elasticsearch Documentation]
| Metric aggregation map            | <<painless-metric-agg-map-context, Painless Documentation>>
                                    | {ref}/search-aggregations-metrics-scripted-metric-aggregation.html[Elasticsearch Documentation]
| Metric aggregation combine        | <<painless-metric-agg-combine-context, Painless Documentation>>
                                    | {ref}/search-aggregations-metrics-scripted-metric-aggregation.html[Elasticsearch Documentation]
| Metric aggregation reduce         | <<painless-metric-agg-reduce-context, Painless Documentation>>
                                    | {ref}/search-aggregations-metrics-scripted-metric-aggregation.html[Elasticsearch Documentation]
| Bucket script aggregation         | <<painless-bucket-script-agg-context, Painless Documentation>>
                                    | {ref}/search-aggregations-pipeline-bucket-script-aggregation.html[Elasticsearch Documentation]
| Bucket selector aggregation       | <<painless-bucket-selector-agg-context, Painless Documentation>>
                                    | {ref}/search-aggregations-pipeline-bucket-selector-aggregation.html[Elasticsearch Documentation]
| Watcher condition                 | <<painless-watcher-condition-context, Painless Documentation>>
                                    | {ref}/condition-script.html[Elasticsearch Documentation]
| Watcher transform                 | <<painless-watcher-transform-context, Painless Documentation>>
                                    | {ref}/transform-script.html[Elasticsearch Documentation]
|====

include::painless-contexts/index.asciidoc[]
