как проверить наличие ключа в упругом поиске безболезненных параметров? - PullRequest
5 голосов
/ 01 июля 2019

Как проверить наличие ключа в безболезненных параметрах карты скриптов.В приведенном ниже запросе проверки 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']"
            }
          }
        }
      ]
    }
  }
}

1 Ответ

3 голосов
/ 01 июля 2019

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']
               """
            }
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...