如何创建不应与多个类别中的任何一个匹配的ElasticSearch查询

时间:2019-07-16 16:08:42

标签: elasticsearch lucene

我正在elasticSearch中寻找与一个或另一个品牌不匹配的文件,但要完全满足修复要求。我正在寻找不是来自丰田,宝马或奥迪的条目。但是该条目必须是superEntry(完全匹配)

以下查询是我正在处理的内容:

    "query": {
        "bool": {
            "filter": {
                "term": {
                    "superEntry": true
                }
            },
            "must": {
                "bool": {
                    "must_not": [
                        {
                            "term": {
                                "brand": "Toyota"
                            }
                        },
                        {
                            "term": {
                                "brand": "BMW"
                            }
                        },
                        {
                            "term": {
                                "brand": "Audi"
                            }
                        }
                    ]
                }
            }
        }
    }
}

预期:我发现来自其他品牌的任何超级条目,但没有来自那些3的条目。上面的查询仍然列出我的宝马汽车为例。

1 个答案:

答案 0 :(得分:1)

未经测试,但类似的方法会有所帮助-

{
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "superEntry": true
          }
        }
      ],
      "must_not": [
        {
          "terms": {
            "brand": [
              "Toyota",
              "BMW",
              "Audi"
            ]
          }
        }
      ]
    }
  }
}