2018-07-02 17:44:36 -04:00
|
|
|
[[painless-sort-context]]
|
|
|
|
=== Sort context
|
|
|
|
|
|
|
|
Use a Painless script to
|
2019-07-19 09:16:35 -04:00
|
|
|
{ref}/search-request-body.html#request-body-search-sort[sort] the documents in a query.
|
2018-07-02 17:44:36 -04:00
|
|
|
|
|
|
|
*Variables*
|
|
|
|
|
|
|
|
`params` (`Map`, read-only)::
|
|
|
|
User-defined parameters passed in as part of the query.
|
|
|
|
|
|
|
|
`doc` (`Map`, read-only)::
|
2018-12-03 12:34:15 -05:00
|
|
|
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)`
|
2018-07-02 17:44:36 -04:00
|
|
|
|
|
|
|
`_score` (`double` read-only)::
|
|
|
|
The similarity score of the current document.
|
|
|
|
|
|
|
|
*Return*
|
|
|
|
|
|
|
|
`double`::
|
|
|
|
The score for the specified document.
|
|
|
|
|
|
|
|
*API*
|
|
|
|
|
2018-12-03 12:34:15 -05:00
|
|
|
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,js]
|
|
|
|
----
|
|
|
|
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"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
----
|
|
|
|
// CONSOLE
|
|
|
|
// TEST[setup:seats]
|