Kibana 查询带有 4 位数字的句子(具有特定顺序的单词)

Kibana query for sentence (words with specific order) with 4 digit number

我是 Elasticsearch 的新手,想在 message 字段

中找到下面的句子

completed in ???? ms

在哪里????是数字

我现在有这个

{
  "query": {
    "query_string": {
      "analyze_wildcard": true,
      "default_field": "*",
      "query": "(message:completed) AND (message:in) AND (message:/[0-9]{4}/) AND (message:ms)"
    }
  }
}

但问题是结果中还包含我不感兴趣的此类消息

如何指定匹配词的顺序?

提前致谢

我也试过这个,但没有成功:

{
  "query": {
    "regexp": {
      "message": {
        "value": "completed in [0-9]{4} ms"
      }
    }
  }
}

正则表达式适用于分析的术语,正则表达式作为短语将不起作用 您可以使用 span query 来实现相同的目的。就性能而言,更好的选择是在索引时处理这个问题,可能会创建一个结构化日志,其中要查询的子文本是一个单独的字段

{
  "query": {
    "span_near": {
      "clauses": [
        {
          "span_term": {
            "message": {
              "value": "job"
            }
          }
        },
        {
          "span_term": {
            "message": {
              "value": "completed"
            }
          }
        },
        {
          "span_term": {
            "message": {
              "value": "in"
            }
          }
        },
        {
          "span_multi": {
            "match": {
              "regexp": {
                "message": "[0-9]{4}"
              }
            }
          }
        },
        {
          "span_term": {
            "message": {
              "value": "ms"
            }
          }
        }
      ],
      "slop": 0,
      "in_order": true
    }
  }
}