Request fields

Example request

The following request uses the default painless_context for the script:

  1. GET /_scripts/painless/_execute
  2. {
  3. "script": {
  4. "source": "(params.x + params.y)/ 2",
  5. "params": {
  6. "x": 80,
  7. "y": 100
  8. }
  9. }
  10. }

copy

Example response

The response contains the average of two script parameters:

  1. "result" : "90"
  2. }

Script contexts

Choose different contexts to control the variables that are available to the script and the result’s return type. The default context is painless_test.

Painless test context

The painless_test context is the default script context that provides only the params variable to the script. The returned result is always converted to a string. See the preceding example request for a usage example.

The filter context runs the script as if the script were inside a script query. You must provide a test document in the context. The _source, stored fields, and _doc variables will be available to the script.

For example, first create an index with a mapping for a test document:

copy

Run a script to determine if a student is eligible to graduate with honors:

  1. {
  2. "script": {
  3. "source": "doc['grad'].value == true && doc['gpa'].value >= params.min_honors_gpa",
  4. "params": {
  5. "min_honors_gpa": 3.5
  6. }
  7. },
  8. "context": "filter",
  9. "context_setup": {
  10. "index": "testindex1",
  11. "document": {
  12. "grad": true,
  13. "gpa": 3.79
  14. }
  15. }
  16. }

copy

The response contains the result:

  1. "result" : true
  2. }

Score context

The score context runs a script as if the script were in a script_score function in a query.

For example, first create an index with a mapping for a test document:

copy

Run a script that converts a GPA on a 4.0 scale into a different scale that is provided as a parameter:

  1. POST /_scripts/painless/_execute
  2. {
  3. "script": {
  4. "source": "doc['gpa_4_0'].value * params.max_gpa / 4.0",
  5. "params": {
  6. "max_gpa": 5.0
  7. }
  8. },
  9. "context": "score",
  10. "context_setup": {
  11. "index": "testindex1",
  12. "document": {
  13. "gpa_4_0": 3.5
  14. }
  15. }
  16. }

copy

The response contains the result:

  1. {