【发布时间】:2021-01-15 13:06:49
【问题描述】:
我想将 event_id 传递给 Kibana/Elastic Search,并从 @timestamp 字段中查找此 event_id 的最小和最大日期。然后我想将日期范围设置为这些日期并显示所有结果。我认为这是可行的。
我可以通过这个聚合得到最小值和最大值:
GET /filebeat-*/_search
{
"query": {
"match": {
"event_id": 1234
}
},
"aggs" : {
"min_date": {"min": {"field": "@timestamp" }},
"max_date": {"max": {"field": "@timestamp" }}
}
}
我可以通过搜索具体的日期范围得到结果:
GET /filebeat-*/_search
{
"query": {
"bool": {
"filter": {
"range": {"@timestamp": {"gte": "2020-09-11T13:35:35.000Z", "lte": "2020-09-24T20:35:07.000Z"}}
}
}
}
}
如何将两者结合起来,以便我可以更改 event_id 并拥有自动日期范围类型功能?
编辑:
我可以这样做:
GET /filebeat-*/_search
{
"query": {
"bool": {
"must": {
"match": {
"event_id": 1234
}
},
"filter": {
"range": {
"@timestamp": {
"lte": "2020-09-25",
"gte": "2020-09-24"
}
}
}
}
},
"aggs": {
"min_date": {
"min": {
"field": "@timestamp"
}
},
"max_date": {
"max": {
"field": "@timestamp"
}
}
}
}
但我想做的是:
GET /filebeat-*/_search
{
"query": {
"bool": {
"must": {
"match": {
"event_id": 1234
}
},
"filter": {
"range": {
"@timestamp": {
"lte": "max_date",
"gte": "min_date"
}
}
}
}
},
"aggs": {
"min_date": {
"min": {
"field": "@timestamp"
}
},
"max_date": {
"max": {
"field": "@timestamp"
}
}
}
}
但这会导致错误:“无法解析日期字段 [min_date]” 是否可以使用聚合的最小值和最大值来定义日期范围?
【问题讨论】:
标签: date elasticsearch filter kibana aggregation