我在ES中有一些记录,它们是人们在不同时间加入/离开的不同的在线会议记录。
{name:"p1", join:'2017-11-17T00:01:00.293Z', leave: "2017-11-17T00:06:00.293Z"}
{name:"p2", join:'2017-11-17T00:02:00.293Z', leave: "2017-11-17T00:04:00.293Z"}
{name:"p3", join:'2017-11-17T00:03:00.293Z', leave: "2017-11-17T00:05:00.293Z"}
Run Code Online (Sandbox Code Playgroud)
时间范围可能是这样的:
p1: [============================================]
p2: [=================]
p3: [==================]
Run Code Online (Sandbox Code Playgroud)
问题是如何计算重叠时间范围(公共/会议/共享时间),应为3分钟
另一个问题是,是否可以知道何时何时有1/2/3人?2分钟2人;1分3人
我认为仅使用 ES 是不可能的。很简单,因为您所需要的只是在搜索中应该转到所有匹配的文档并根据该文档进行计算
我将按照以下步骤进行操作。
1.在索引新文档之前搜索重叠的文档。
GET /meetings/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"join": {
"gte": "2007-10-01T00:00:00"
}
}
},
{
"range": {
"leave": {
"lte": "2007-10-01T00:00:00"
}
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |