elasticsearch ELK -意外查询结果

ubby3x7f  于 2023-06-29  发布在  ElasticSearch
关注(0)|答案(1)|浏览(131)

我有一个奇怪的问题,这个查询,事实上,超出预期的结果,它似乎提取的事件与rule.id:“100002”。
有人能告诉我我哪里错了吗?

{
   "query":{
      "bool":{
         "should":[
            {
               "wildcard":{
                  "rule.description":{
                     "value":"*PNP device*"
                  }
               }
            },
            {
               "match_phrase":{
                  "rule.id":{
                     "query":"111000",
                     "slop":0,
                     "zero_terms_query":"NONE",
                     "boost":1
                  }
               }
            },
            {
               "match_phrase":{
                  "rule.id":{
                     "query":"111001",
                     "slop":0,
                     "zero_terms_query":"NONE",
                     "boost":1
                  }
               }
            },
            {
               "range":{
                  "timestamp":{
                     "gte":"now-10m",
                     "lte":"now",
                     "format":"strict_date_optional_time"
                  }
               }
            }
         ],
         "adjust_pure_negative":true,
         "minimum_should_match":"1",
         "boost":1
      }
   }
}

目标是通过检查字符串“PNP device”是否存在于rule.description字段中来提取与111000事件或111001事件匹配的记录

yqyhoc1h

yqyhoc1h1#

由于所有约束都在bool/should中,并且minimum_should_match: 1,这意味着您将获得匹配至少一个这些约束的所有文档。
您正在查找的查询可能是这样的:

{
  "query": {
    "bool": {
      "filter": [
        {
          "wildcard": {
            "rule.description": {
              "value": "*PNP device*"
            }
          }
        },
        {
          "range": {
            "timestamp": {
              "gte": "now-10m",
              "lte": "now",
              "format": "strict_date_optional_time"
            }
          }
        },
        {
          "terms": {
            "rule.id": ["111000", "111001"]
          }
        }
      ]
    }
  }
}

相关问题