Сопоставление нескольких значений в одном поле - PullRequest
0 голосов
/ 29 мая 2018

У меня есть поле «маршруты» как тип long (я сохраняю массив значений в этом примере 1. [5463, 3452] , 2. [5467, 3452]) в отображении.В следующем запросе я хочу получить данные, которые совпадают с 5463, 3452 в одной и той же записи

GET /flight_routes/_search
{
    "query": {
    "bool": {
    "filter": {
        "terms": {
          "routes": [5463, 3452]
        }
      }
    }
    }
}

Но это возвращаемый документ, который соответствует какому-либо одному значению.Должен ли я перенести тип отображения во вложенный, чтобы обработать этот или любой другой способ получить его через сам запрос?

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете использовать terms_set запрос с minimum_should_match_script, который возвращает длину массива

POST /flight_routes/_search
{
    "query": {
        "terms_set": {
            "routes" : {
                "terms" : [5463, 3452],
                "minimum_should_match_script": {
                   "source": "params.nb_terms",
                   "params": {
                      "nb_terms": 2
                   }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...