我正在尝试创建一个查询来计算最后一天满足两个条件的实例。
此查询显示两个条件的计数,但当我尝试添加范围时,它似乎匹配所有文档:
GET logstash-*/_count
{
"query": {
"bool": {
"should": [
{
"match": {
"rawmsg": {
"query": "Could not send Message.",
"type": "phrase"
}
}
},
{
"match": {
"stack_trace": {
"query": "*WebServiceException*",
"type": "phrase"
}
}
}
]
}
}
}
以下是我尝试添加日期范围的方法:
GET logstash-*/_count
{
"query": {
"bool": {
"should": [
{
"match": {
"rawmsg": {
"query": "Could not send Message.",
"type": "phrase"
}
}
},
{
"match": {
"stack_trace": {
"query": "*WebServiceException*",
"type": "phrase"
}
}
},
{
"range" : {
"@timestamp" : {
"gte" : "now-1d/d",
"lt" : "now/d"
}
}
}
]
}
}
}
答案 0 :(得分:0)
您使用的是should
子句而不是must
子句,它有效地将您的条件与OR
而不是AND
结合起来。
此外,范围查询的时间戳应为now/d-1d
。
答案 1 :(得分:0)
我最终找到了两种方法来完成我需要的东西:
GET logstash-*/tcp_input/_count?q=stack_trace: *WebServiceException* AND rawmsg: "Could not send Message" AND @timestamp: [ now-30d TO now ]
and
GET logstash-*/_count
{
"query": {
"query_string": {
"query": """stack_trace: *WebServiceException* AND rawmsg: "Could not send Message" AND @timestamp: [ now-3d TO now]""",
"analyze_wildcard": true
}
}
}