我对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\u count和hours\u in\u use aggregation bucket的小时数。所以对于上面的数据,bucket应该是这样的。
{
"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",
"session_count": {
"value": 1
},
"hours_in_use": {
"value": 1
}
},
{
"key_as_string": "2020-09-11T16:00:00.000Z",
"session_count": {
"value": 1
},
"hours_in_use": {
"value": 0.5
}
},
{
"key_as_string": "2020-09-11T18:00:00.000Z",
"session_count": {
"value": 1
},
"hours_in_use": {
"value": 0.5
}
},
{
"key_as_string": "2020-09-11T19:00:00.000Z",
"session_count": {
"value": 1
},
"hours_in_use": {
"value": 1
}
},
{
"key_as_string": "2020-09-11T20:00:00.000Z",
"session_count": {
"value": 1
},
"hours_in_use": {
"value": 0.5
}
}
]
}
我尝试使用bucket聚合,但找不到如何在从开始时间到结束时间的所有小时bucket中包含会话。我可以使用字典(map)在typescript代码中编写相同的逻辑,但是我想知道是否可以使用elasticsearch聚合来完成。我的要求不仅限于每小时一次,也可以是一天/月/周/年一次,我需要处理结束时间与时间重叠的情况,如我的示例所示。
我真的很感激你的指导。
暂无答案!
目前还没有任何答案,快来回答吧!