我有一个查询使用脚本对结果进行排序,对于我的业务,我需要一个名为cities的params来计算排序值,但是当我使用Debug.explain来打印params.cities时,顺序并不意外,它被重新排序。
有没有人知道如何在脚本中使用正确的顺序?提前感谢您的帮助。
查询:
GET tour/product/_search
{
"sort" : [
{
"_script" : {
"script" : {
"inline" : "Debug.explain(params.cities);",
"lang" : "painless",
"params" : {
"cities" : {
"2" : 100.0,
"17" : 3.71,
"12" : 3.63,
"13" : 3.63,
"14" : 3.6
}
}
},
"type" : "number",
"order" : "desc"
}
}
]
}
打印结果:
{ "error": {
"root_cause": [
{
"type": "painless_explain_error",
"reason": "painless_explain_error: null"
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "tour-1",
"node": "y5z7ah5cSoCk6n3Q95gbxw",
"reason": {
"type": "script_exception",
"reason": "runtime error",
"painless_class": "HashMap",
"to_string": "{12=3.63, 2=100.0, 13=3.63, 14=3.6, 17=3.71}",
"java_class": "java.util.HashMap",
"script_stack": [
"Debug.explain(params.cities);",
" ^---- HERE"
],
"script": "Debug.explain(params.cities);",
"lang": "painless",
"caused_by": {
"type": "painless_explain_error",
"reason": "painless_explain_error: null"
}
}
}
],
"caused_by": {
"type": "script_exception",
"reason": "runtime error",
"painless_class": "HashMap",
"to_string": "{12=3.63, 2=100.0, 13=3.63, 14=3.6, 17=3.71}",
"java_class": "java.util.HashMap",
"script_stack": [
"Debug.explain(params.cities);",
" ^---- HERE"
],
"script": "Debug.explain(params.cities);",
"lang": "painless",
"caused_by": {
"type": "painless_explain_error",
"reason": "painless_explain_error: null"
}
} }, "status": 500 }