如何检查弹性搜索无痛参数中是否存在密钥?

how to check for key exist in elastic-search painless parameters?

如何检查无痛脚本映射参数中是否存在密钥。 在下面的查询中,检查参数中是否存在 a.toString() 键 我已经尝试了一切,但没有成功。 请帮助我

映射:

"id": {
   "type": "long"
}

查询:

{
  "query":{
    "bool":{
      "filter":[
        {
          "script": {
            "script": {
               "lang": "painless",
               "params": {
                 "29232":2541,
                 "minDistance": 0
               },
               "source": "def a=doc['id'].getValue();double distance=params[a.toString()]; return distance <= 1000 && distance >= params['minDistance']"
            }
          }
        }
      ]
    }
  }
}

params 只是一个 Java Map 对象。因此,以下检查 key 是否存在于 params 中,如果不存在则提前退出并返回 false

GET test/_search
{
  "query":{
    "bool":{
      "filter":[
        {
          "script": {
            "script": {
               "lang": "painless",
               "params": {
                 "29232":2541,
                 "minDistance": 0
               },
               "source": """
               def a=doc['id'].getValue();
               if (!params.containsKey(a.toString())) {
                 return false;
               }
               double distance=params[a.toString()]; 
               return distance <= 1000 && distance >= params['minDistance']
               """
            }
          }
        }
      ]
    }
  }
}