﻿---
title: Sort context
description: Use a Painless script to sort the documents in a query. Variables Return API The standard Painless API is available. Example To run this example, first...
url: https://www.elastic.co/elastic/docs-builder/docs/2413/reference/scripting-languages/painless/painless-sort-context
products:
  - Painless
---

# Sort context
Use a Painless script to [sort](https://www.elastic.co/elastic/docs-builder/docs/2413/reference/elasticsearch/rest-apis/sort-search-results) the documents in a query.
**Variables**
<definitions>
  <definition term="params (Map, read-only)">
    User-defined parameters passed in as part of the query.
  </definition>
  <definition term="doc (Map, read-only)">
    Contains the fields of the current document. For single-valued fields, the value can be accessed via `doc['fieldname'].value`. For multi-valued fields, this returns the first value; other values can be accessed via `doc['fieldname'].get(index)`
  </definition>
  <definition term="_score (double read-only)">
    The similarity score of the current document.
  </definition>
</definitions>

**Return**
<definitions>
  <definition term="double or String">
    The sort key. The return type depends on the value of the `type` parameter in the script sort config (`"number"` or `"string"`).
  </definition>
</definitions>

**API**
The standard [Painless API](https://www.elastic.co/guide/en/elasticsearch/painless/current/painless-api-reference-shared.html) is available.
**Example**
To run this example, first follow the steps in [context examples](https://www.elastic.co/elastic/docs-builder/docs/2413/reference/scripting-languages/painless/painless-context-examples).
To sort results by the length of the `theatre` field, submit the following query:
```json

{
  "query": {
    "term": {
      "sold": "true"
    }
  },
  "sort": {
    "_script": {
      "type": "number",
      "script": {
        "lang": "painless",
        "source": "doc['theatre'].value.length() * params.factor",
        "params": {
          "factor": 1.1
        }
      },
      "order": "asc"
    }
  }
}
```