Grafana lucene 查询: fields.someFieldname = xxx 和 fields.someFieldname 之间的区别:xxx

Grafana lucene query: Difference between fields.someFieldname = xxx and fields.someFieldname: xxx

我正在编写一个 Grafana lucene 查询,并且在绘制 fields.statusCode = xxx 和 fields.statusCode: xxx 时 我得到两个不同的总数,第一个 fx 是 1200 而第二个是 24.

凭直觉我猜第一个更具体,但它给出的总数更高。

':' 和 '=' 有什么区别?

更新 提供截图 这是使用“:”

的屏幕截图

这是使用“=”的截图

如您所见,唯一改变的是 : vs = .

我把图片的某些部分划掉了(这不影响问题)。

查询中的第一个外标就是 url.

在 Lucene 查询中,要使用的正确运算符是 : 而不是 =,因此产生 24 个结果的 fields.statusCode:xxx 是正确的方法。

可以在 Lucene query parser syntax 文档中找到更多信息。

无论您在 Grafana 的 Query 字段中写入什么,最终都会出现在下面的 query_string 中:

{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "@timestamp": {
              "gte": "1571221609944",
              "lte": "1571223409944",
              "format": "epoch_millis"
            }
          }
        },
        {
          "query_string": {
            "analyze_wildcard": true,
            "query": "fields.requestPath:\"bla bla bla\" AND XYZ AND method:POST"
          }
        }
      ]
    }
  },
  "aggs": {
    ...
  }
}

正如您在 query_string query syntax 中看到的(在语义上等同于我上面分享的那个),: 是您需要用来分隔字段名称和值的字符。