具有两个时间戳字段的Elasticsearch聚合

问题描述

我是Elasticsearch的新手。我的 会话 索引看起来像这样

[
  {
    "id": "101","start_date_time": "2020-09-11T14:00:00Z","end_date_time": "2020-09-11T16:30:00Z",...
  },{
    "id": "102","start_date_time": "2020-09-11T18:30:00Z","end_date_time": "2020-09-11T20:30:00Z",...
  }
]

我想做的是每小时获取session_count和hours_in_use聚合存储桶。因此,对于以上数据,存储桶应该看起来像这样。

{
  "buckets": [
    {
      "key_as_string": "2020-09-11T14:00:00.000Z","session_count": {
        "value": 1
      },"hours_in_use": {
        "value": 1
      }
    },{
      "key_as_string": "2020-09-11T15:00:00.000Z",{
      "key_as_string": "2020-09-11T16:00:00.000Z","hours_in_use": {
        "value": 0.5
      }
    },{
      "key_as_string": "2020-09-11T18:00:00.000Z",{
      "key_as_string": "2020-09-11T19:00:00.000Z",{
      "key_as_string": "2020-09-11T20:00:00.000Z","hours_in_use": {
        "value": 0.5
      }
    }
  ]
}

我尝试使用存储桶聚合,但是找不到从开始时间到结束时间的所有小时存储桶中都包含会话的方法。我可以使用字典(Map)在打字稿代码中编码相同的逻辑,但是我想知道是否可以使用Elasticsearch聚合来完成。我的要求不仅限于小时存储桶,还可以是日/月/周/年存储桶,而且我需要像在给定示例中那样处理end_time与存储桶重叠的情况。

我真的很感谢任何指导。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...