代码之家  ›  专栏  ›  技术社区  ›  Prismatic

在ElasticSearch中以秒为单位转换日期\u直方图间隔

  •  0
  • Prismatic  · 技术社区  · 8 年前

    我有一套ES格式的文件,代表时间的累积值。例如:

    {
        "timestamp": ...,
        "raindrops_seen": 40,
        ...
    }
    

    我想创建一个查询,在这里我可以得到一个日期直方图聚合中指定时间间隔的平均速率(即雨滴数)。我可以总结现场的结果,但我不知道如何以秒为单位计算时间间隔。我希望有一种简单的方法可以在查询中实现这一点,而无需事先转换为秒数。

    {
        "query": {
            ...
        },
        "aggregations": {
            "by_hour": {
                "date_histogram": {
                    "field": "timestamp",
                    "interval": "0.5h",
                    "extended_bounds": {
                        "min": "now/d-5h",
                        "max": "now/d-1h"
                    }
                },
                "aggregations": {
                    "sum_raindrops": {
                        "sum": {
                            "field": "raindrops_seen"
                        }
                    },
                    "avg_scripts": {
                        "bucket_script": {
                            "buckets_path": {
                                "var_sum_raindrops": "sum_raindrops"
                            },
                            "script": "var_sum_raindrops / (?)"
                        }
                    }
                }
            }
        }
    }
    

    是否有一种简单的方法将“0.5h”或间隔中指定的任何值转换为秒?日期直方图支持中指定的间隔 https://www.elastic.co/guide/en/elasticsearch/reference/2.4/common-options.html#time-units ,以及“week”和“day”等字符串。我用的是ES 2.4。

    0 回复  |  直到 8 年前