如何获得带有持续时间的ElasticSearch聚合

时间:2019-06-04 23:29:21

标签: elasticsearch kibana

我正在使用ElasticSearch 7.1.0和Kibana 7.1.0,并且我的数据如下所示

{
  "user":"8a195d1b-24c9-11e5-8f96-00142273155d",
   "session_id":"4d024a90-b141-4ee1-b4e3-e2022fb2f581",
   "timestamp":1559681962442,
   "recieved_timestamp":1559681964197,
   "feature_id":"foo",
   "dwell":{
      "resource_id":"foo",
      "dwell_ms":23218
   },
   "event_type":"dwell",
   "stored_timestamp":1559682046757
}

我想使用显示停留事件开始和结束的聚合来查看数据,在这里我使用术语聚合将停留事件排序到所引用功能的存储桶中,然后针对每个功能这些存储桶中的事件中的事件将相对的驻留偏移量添加到时间戳,以便我可以同时知道事件的开始时间和结束时间。

任何有关如何为Elasticsearch构建此类查询的指南都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试一下。它将按字段event_type聚合所有事件,并再次使用top_hits子聚合从相应的术语聚合存储桶中获取timestamp字段。

{
    "size": 0,
    "aggs": {
        "event_type": {
            "terms": {
                "field": "event_type",
                "size": 5
            },
            "aggs": {
                "top_event_hits": {
                    "top_hits": {
                        "_source": {
                            "includes": [
                                "timestamp"
                            ]
                        },
                        "size": 1
                    }
                }
            }
        }
    }
}