0

elasticsearch中的一些数据是这样的:

{"info":"fwefwefwef","is_fail":0,"result":404,"key":"845722d85520c91f345b08aba3233c96","duration":1,"lts_at":1479786902}

'lts_at 是'时间戳,我想按'floor(lts_at/300)'中的数据分组

{ 
"aggs": {
    "per_5minute": {
        "terms": {
            "field": "lst_at/300"
        }
    }
}

如何编写聚合查询?

4

1 回答 1

0

您可以尝试使用间隔为 5 分钟的date_histogram聚合,如下所示:

{
    "aggs" : {
        "per_5minute" : {
            "date_histogram" : {
                "field" : "lst_at",
                "interval" : "5m"
            }
        }
    }
}

如果你想坚持terms聚合,那么你需要使用一个脚本来代替:

{ 
"aggs": {
    "per_5minute": {
        "terms": {
            "script": {
                "inline": "Math.floor(doc.lst_at.value / 300)"
            }
        }
    }
}

为此,您需要启用动态脚本

于 2016-11-29T04:52:16.343 回答