我正在编写Grafana lucene查询,并且在绘制fields.statusCode = xxx和fields.statusCode:xxx时 我得到两个不同的总数,第一个fx为1200,第二个为24。
直觉上,我猜第一个是更具体的,但总数却更高。
':'和'='有什么区别?
更新提供屏幕截图 这是使用“:”的屏幕截图。
以下是使用“ =“
如您所见,唯一改变的是:vs =。
我标记了图片的某些部分(不会影响问题)。
查询中的第一个标记就是URL。
答案 0 :(得分:0)
在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中看到的那样(在语义上等同于我在上面共享的那个),:
是您需要用来分隔字段名称和值的字符。