61 lines
1.3 KiB
Plaintext
61 lines
1.3 KiB
Plaintext
[[painless-sort-context]]
|
|
=== Sort context
|
|
|
|
Use a Painless script to
|
|
{ref}/search-request-body.html#request-body-search-sort[sort] the documents in a query.
|
|
|
|
*Variables*
|
|
|
|
`params` (`Map`, read-only)::
|
|
User-defined parameters passed in as part of the query.
|
|
|
|
`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)`
|
|
|
|
`_score` (`double` read-only)::
|
|
The similarity score of the current document.
|
|
|
|
*Return*
|
|
|
|
`double`::
|
|
The score for the specified document.
|
|
|
|
*API*
|
|
|
|
The standard <<painless-api-reference, Painless API>> is available.
|
|
|
|
*Example*
|
|
|
|
To run this example, first follow the steps in
|
|
<<painless-context-examples, context examples>>.
|
|
|
|
To sort results by the length of the `theatre` field, submit the following query:
|
|
|
|
[source,console]
|
|
----
|
|
GET /_search
|
|
{
|
|
"query": {
|
|
"term": {
|
|
"sold": "true"
|
|
}
|
|
},
|
|
"sort": {
|
|
"_script": {
|
|
"type": "number",
|
|
"script": {
|
|
"lang": "painless",
|
|
"source": "doc['theatre'].value.length() * params.factor",
|
|
"params": {
|
|
"factor": 1.1
|
|
}
|
|
},
|
|
"order": "asc"
|
|
}
|
|
}
|
|
}
|
|
----
|
|
// TEST[setup:seats] |