ElasticSearch Filter by Array Field Не содержит определенные значения - PullRequest
0 голосов
/ 20 марта 2020

У меня есть следующий набор данных:

[
  {
    "name": "Name 1",
    "countries": [
      "AF", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "UM", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "KH", "CM", "CA", "CV", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CK", "CR", "HR", "CU", "CY", "CZ", "DK", "DJ", "DM", "DO", "TP", "EC", "EG", "SV", "GQ", "ER", "EE", "ET", "FK", "FO", "FJ", "FI", "FR", "FX", "GF"
    ]
  },
  {
    "name": "Name 2",
    "countries": [
      "US", "GB"
    ]
  }
]

Как я могу фильтровать элементы, которые НЕ содержат определенные специфические c страны, такие как ["GB", "FR"].

1 Ответ

1 голос
/ 20 марта 2020

Предполагая, что countries является полем типа keyword, приведенный ниже запрос должен возвращать элементы, которые не содержат ЛЮБОЙ страны.

{
  "query": {
    "bool": {
      "must_not": [
        {
          "terms": {
            "countries": [
              "GB",
              "FR"
            ]
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...