我在Elasticsearch中處理的文檔代表警報。這些警報會被激活一段時間,並且看起來像下一個文檔。ElasticSearch日期直方圖聚合考慮文檔範圍內的日期
{
"id": 189393,
"sensorId": "1111111",
"activationTime": 1462569310000,
"deactivationTime": 1462785524876,
}
我想知道一天當中的活動警報的數量。爲此,我希望執行日期直方圖聚合,以考慮警報處於活動狀態的日期,因爲當我執行簡單日期直方圖聚合時,警報僅被視爲活動時間。
例如,我想知道哪些日子已被激活前一次警報,並執行此查詢。
{
"query" : {
...
},
"aggs": {
"active_alerts": {
"date_histogram": {
"field": "timestamp",
"interval": "day"
}
}
}
}
返回
"aggregations": {
"active_alerts": {
"buckets": [
{
"key_as_string": "2016-05-06T00:00:00.000Z",
"key": 1462492800000,
"doc_count": 1
}
]
}
}
這我想回
"aggregations": {
"active_alerts": {
"buckets": [
{
"key_as_string": "2016-05-06T00:00:00.000Z",
"key": 1462492800000,
"doc_count": 1
},
{
"key_as_string": "2016-05-07T00:00:00.000Z",
"key": 1462579200000,
"doc_count": 1
},
{
"key_as_string": "2016-05-08T00:00:00.000Z",
"key": 1462665600000,
"doc_count": 1
}
]
}
}
感謝。
昨天我找到了解決方案,但我無法寫出答案。謝謝你:) – Sapikelio
是的,這幾乎是基本的想法。您也可以在索引時間執行此操作,並通過在單個「日期」字段中將所有日期(天)編入索引來節省一些搜索時間。 –