首页 > 解决方案 > 如何查询最近 1 小时的数据并按时间排序?

问题描述

我在 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" } 
                    }
                }
            }
        }  
    }
}

谢谢。

标签: elasticsearch

解决方案


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


推荐阅读