我想过滤掉LogMessage字段中存在Too many connections的所有文档。

我写的查询是:

'
{
  "query": {
    "bool": {
      "must": {
        "match": {
          "logType": "Error"
        }
      },
      "must_not": {
         "match": {
           "LogMessage": ".*Too many connections.*"
         }
      }
    }
  }
}'

另一方面,如果我在LogMessage字段中使用了整个字符串,则可以正常工作。

我已经在这里验证了我的正则表达式:
https://regex101.com/r/EexTmV/1

请帮我解决这个问题。

最佳答案

您需要使用 regexp query而不是match查询

{
  "query": {
    "bool": {
      "must": {
        "match": {
          "logType": "Error"
        }
      },
      "must_not": {
         "regexp": {
           "LogMessage": ".*Too many connections.*"
         }
      }
    }
  }
}

关于curl - Elasticsearch must_not查询与正则表达式不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42524616/

10-15 20:21