地图参数在弹性搜索中重新排序

时间:2017-12-13 09:30:57

标签: elasticsearch

我有一个查询使用脚本对结果进行排序,对于我的业务,​​我需要一个名为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 }

0 个答案:

没有答案