Elasticsearch must_not查询与正则表达式不匹配

时间:2017-03-01 06:21:35

标签: curl elasticsearch kibana

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

我写的查询是:

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

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

我在这里验证了我的正则表达式:

https://regex101.com/r/EexTmV/1

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:4)

您需要使用regexp query代替match查询

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