每@timestamp小时的ElasticSearch查询聚合

时间:2019-03-30 14:42:30

标签: elasticsearch

im在metricbeat上对elasticSearch进行查询,以每小时对最常用的进程进行评分,在此刻,我正在按进程开始时间和进程名称进行汇总,我需要使用“ @”字段对这些组进行“划分”时间戳”每小时

那是我的实际查询

df4 = df4.reset_index().rename_axis(None, axis=1)

1 个答案:

答案 0 :(得分:0)

要跟踪和复制它有点困难-一个最小的示例(我认为确实不需要整个query),并且示例文档会走很长一段路。

如果您希望每小时进行一次汇总,则首先需要进行的是汇总,然后在其中运行其他汇总。

每小时汇总的最小示例是:

POST /metricbeat*/_search?size=0
{
    "aggs" : {
        "metrics_per_hour" : {
            "date_histogram" : {
                "field" : "@timestamp",
                "interval" : "hour"
            }
        }
    }
}

在其他聚合中的折叠看起来像这样:

POST /metricbeat*/_search?size=0
{
    "aggs" : {
        "metrics_per_hour" : {
            "date_histogram" : {
                "field" : "@timestamp",
                "interval" : "hour"
            },
            "aggs" : {
                ...
            }
        }
    }
}

PS:如果您使用的是每日索引模式,则可以使用正确的日期而不是通配符,然后跳过查询的这一部分:

"range": {
    "@timestamp": {
        "gte": "2019-03-22T00:00:00",
        "lte": "2019-03-23T00:00:00"
    }
}