44 lines
1.2 KiB
Plaintext
44 lines
1.2 KiB
Plaintext
|
[[query-dsl-custom-score-query]]
|
||
|
=== Custom Score Query
|
||
|
|
||
|
`custom_score` query allows to wrap another query and customize the
|
||
|
scoring of it optionally with a computation derived from other field
|
||
|
values in the doc (numeric ones) using
|
||
|
<<modules-scripting,script expression>>. Here is
|
||
|
a simple sample:
|
||
|
|
||
|
[source,js]
|
||
|
--------------------------------------------------
|
||
|
"custom_score" : {
|
||
|
"query" : {
|
||
|
....
|
||
|
},
|
||
|
"script" : "_score * doc['my_numeric_field'].value"
|
||
|
}
|
||
|
--------------------------------------------------
|
||
|
|
||
|
On top of the different scripting field values and expression, the
|
||
|
`_score` script parameter can be used to retrieve the score based on the
|
||
|
wrapped query.
|
||
|
|
||
|
[float]
|
||
|
==== Script Parameters
|
||
|
|
||
|
Scripts are cached for faster execution. If the script has parameters
|
||
|
that it needs to take into account, it is preferable to use the same
|
||
|
script, and provide parameters to it:
|
||
|
|
||
|
[source,js]
|
||
|
--------------------------------------------------
|
||
|
"custom_score" : {
|
||
|
"query" : {
|
||
|
....
|
||
|
},
|
||
|
"params" : {
|
||
|
"param1" : 2,
|
||
|
"param2" : 3.1
|
||
|
},
|
||
|
"script" : "_score * doc['my_numeric_field'].value / pow(param1, param2)"
|
||
|
}
|
||
|
--------------------------------------------------
|