在单个搜索短语中使用必须使用的有效使用方法



我是Elasticsearch的新手,而Lookig当前是必不可少的,并且必须_not类型的搜索标准。我有以下查询DSL:

curl -XPOST 'localhost:9200/employee/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "age": "40" } }
      ],
      "must_not": [
        { "match": { "state": "ID" } }
      ]
    }
  }
}'

现在我的问题是,有什么方法可以优化上述查询?就像,如果我必须搜索多个必须和必须的标准,则查询将变得非常大且难以管理。有什么办法可以在一个搜索短语下同时组合必须和必须的_not?

据我所知,您可以使用"应该"将多个匹配项放入" bool"语句中(不确定为什么它完全无法直接与一个" bool"语句一起使用):

edit 实际上要有几次匹配,而没有太复杂的请求,下面的内容应正常工作:

{
  "query": {
    "bool":{
          "must": [
            {"match":{"age":"40"}},
            {"match":{"name": "John"}}
          ]
          , "must_not": [
                {"match":{"age":"40"}},
            {"match":{"name": "John"}}
          ]
        }
  }
}

不幸的是,mustmust_not无法组合

相关内容

最新更新