我试图在给定的时间范围内计算查询匹配的数量,使用下面指示的正文点击网址/{index}/_count
。
我是查询DSL的新手,所以很有可能我忽略了一些显而易见的事情。但是,将计数直接应用于现有查询并不起作用。我没有在文档中看到任何表明计数查询应该接受特殊处理的内容。
我已尝试在查询中添加范围和聚合,但我不断收到以下错误或某些变体:
指数:数据/读取/计数[S]]];嵌套: QueryParsingException [[graylog2_NN]请求不支持[{label}]]
按时间戳限制查询:
{
"query": {
"term": { "level":3 },
"range": {
"timestamp": {
"from": "2015-06-16 15:10:09.322",
"to": "2015-06-16 16:10:09.322",
"include_lower": true,
"include_upper": true
}
}
}
}
使用聚合:
{
"query": {
"term": { "level":3 }
},
"aggs": {
"range": {
"date_range": {
field: "_timestamp",
"ranges": {
{ "to": "now-1d" },
{ "from": "now-2d" },
}
}
}
}
}
我还尝试插入从UI导出的查询(单个流显示中的错误图标),也没有任何欢乐(一小时的匹配):
{
"from": 0,
"size": 100,
"query": {
"match_all": {}
},
"post_filter": {
"bool": {
"must": [
{
"range": {
"timestamp": {
"from": "2015-06-16 15:10:09.322",
"to": "2015-06-16 16:10:09.322",
"include_lower": true,
"include_upper": true
}
}
},
{
"query": {
"query_string": {
"query": "streams:5568c9dbe4b0b31b781bf105"
}
}
}
]
}
},
"sort": [
{
"timestamp": {
"order": "desc"
}
}
],
"highlight": {
"require_field_match": false,
"fields": {
"*": {
"fragment_size": 0,
"number_of_fragments": 0
}
}
}
}
答案 0 :(得分:1)
我发现一个查询都匹配并与我从UI获得的数字非常接近(“在过去1天内搜索”):
{
"query": {
"filtered": {
"query": {
"term": { "level":3 }
},
"filter": {
"range": { "timestamp": { "gte": "now-1d" } }
}
}
}
}
答案 1 :(得分:0)
尝试使用bool query的以下查询。我使用不同的时间戳格式,这是elasticsearch中的默认格式。首先尝试该格式,如果没有运气,请修改时间戳格式以匹配您的格式。
{
"query": {
"bool" : {
"should" : [
{
"term": { "level":3 }
},
{
"range": {
"timestamp": {
"from": "2015-06-16T15:10:09",
"to": "2015-06-16T16:10:09"
}
}
}
]
}
}
}