1

我想在消息中搜索特定字符串,以便该字符串可以具有以下值:

  • “程序启动过程开始”
  • “程序关闭过程开始”
  • “程序恢复过程开始”
  • “程序关闭过程结束”

我正在使用以下查询来尝试查找这些消息:

GET /my_index/_search
{
    "query": {
        "regexp":{
            "message": "program.*process.*"
        }
    }
}

上面的搜索根本没有给出任何结果。虽然如果我使用

GET /my_index/_search
{
    "query": {
        "regexp":{
            "message": "program.*"
        }
    }
}

它提供了所有预期的匹配(尽管比我想要的要多得多)。

我对正则表达式做错了什么?

4

1 回答 1

1

您还可以使用match_phrase斜率为 1 的查询。这比使用正则表达式查询性能要高得多:

POST test/_search
{
  "query": {
    "match_phrase": {
      "text": {
        "query": "program process",
        "slop": 1
      }
    }
  }
}
于 2018-08-16T18:43:24.590 回答