Kibana 如何在一个elasticscearch dsl查询中合并不同的搜索参数?

e0uiprwp  于 2022-12-09  发布在  Kibana
关注(0)|答案(1)|浏览(152)

祝你们愉快,
我在Elastic/Kibana中遇到了一个小问题。在Kibana查询语言“KQL”中,我可以执行某个查询:

car:* AND coun: * AND doc: (bes* OR *rvr*) AND NOT coun: (SIP OR LUK)

我想使用Elasticscearch查询DSL将其用作过滤器查询。只是我没有得到相同的结果。为此,我使用布尔运算符。我的查询如下所示:

{
  "query": {
    "bool": {
      "must": [
        {
          "exists": {
            "field": "car"
          }
        },
        {
          "exists": {
            "field": "coun"
          }
        }
      ],
      "should": [
        {
          "wildcard": {
            "doc.keyword": {
              "value": "bes*"
            }
          }
        },
        {
          "wildcard": {
            "doc.keyword": {
              "value": "*rvr*"
            }
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "coun.keyword": "SIP"
          }
        },
        {
          "term": {
            "coun.keyword": "LUK"
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

不幸的是,我没有得到相同的结果。我猜是“应该”操作符。但我不知道如何调整代码。
我将非常感激任何答案!非常感谢!

bnl4lu3b

bnl4lu3b1#

这里的问题是,你把OR放在AND外面。只要把should子句移到must里面。就像这样

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "exists": {
            "field": "car"
          }
        },
        {
          "exists": {
            "field": "con"
          }
        },
        {
          "bool": {
            "should": [
              {
                "wildcard": {
                  "doc.keyword": {
                    "value": "bes*"
                  }
                }
              },
              {
                "wildcard": {
                  "doc.keyword": {
                    "value": "*rvr*"
                  }
                }
              }
            ]
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "coun.keyword": "SIP"
          }
        },
        {
          "term": {
            "coun.keyword": "LUK"
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

相关问题