如何查询最近1个小时的数据并根据时间排序?

时间:2018-08-06 17:11:24

标签: elasticsearch

我在ES中有数据,例如:

@timestamp --> Timestamp field
record.hostIP 
record.destIP
record.port
record.application
etc...

我想在js中的图形上绘制它,因此需要时间在X轴上并需要记录数。<>在Y轴上。

以下查询使我的文档按时间戳与计数(所有文档的总数)排序。 如果我需要最近1个小时内的record.application计数,从最早到最晚的时间戳排序,该怎么办?

GET _search
{
        "size": "0",
        "aggs": {
            "oneHourTimeRange": {
                "filter": {
                    "range": {
                        "@timestamp": {
                            "gte": "now-60m",
                            "lte": "now"
                        }
                    }
                },
                "aggs": {
                    "totalTraffic": {
                    "terms": {
                        "field": "@timestamp",
                        "size": 500,
                        "order": { "_key": "asc" } 
                    }
                }
            }
        }  
    }
}

谢谢。

1 个答案:

答案 0 :(得分:0)

您是指record.application的唯一计数吗?您可能需要基数聚合。对于聚合,您将基数聚合嵌套在日期直方图中,它应该可以为您提供所需的信息。您应该将过滤条件移到外部,而不是聚合的一部分。