我有以下数据集:

[
  {
    "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"
    ]
  }
]

如何过滤不包含某些特定国家(例如["GB", "FR"])的项目。

最佳答案

假设countrieskeyword类型的字段,则以下查询应返回不包含任何国家/地区的项目。

{
  "query": {
    "bool": {
      "must_not": [
        {
          "terms": {
            "countries": [
              "GB",
              "FR"
            ]
          }
        }
      ]
    }
  }
}

关于elasticsearch - ElasticSearch按数组字段过滤不包含某些值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60771607/

10-11 08:44