所以考虑这个数据:
映射
{
"testIndex": {
"mappings": {
"testType": {
"properties": {
"eventType": {
"type": "string",
"index": "not_analyzed"
},
"eventStarted": {
"type": "date"
},
"eventEnded": {
"type": "date"
}
}
}
}
}
}
和一些示例数据来了解什么是什么
{
"eventType" : "type1",
"eventStarted" "2014-09-01 08:00:01",
"eventEnded" "2014-09-01 09:21:57"
},
{
"eventType" : "type1",
"eventStarted" "2014-09-01 10:01:07",
"eventEnded" "2014-09-01 10:28:11"
},
{
"eventType" : "type2",
"eventStarted" "2014-09-01 09:13:46",
"eventEnded" "2014-08-11 09:21:51"
},
{
"eventType" : "type3",
"eventStarted" "2014-08-11 10:13:46",
"eventEnded" "2014-08-11 10:21:51"
}
...
这个想法是有些事件时不时地独立发生,我们记录它们何时开始和何时结束。
我需要的是进行聚合,但如果没有一些外部脚本,我想不出办法。
聚合应该给我:在eventType “type1”开始之前 10 分钟到 0 分钟发生的所有eventTypes的列表,并在“type1 ”开始之后结束。
而且我不需要针对特定的“type1”事件而是针对所有事件,因此我的聚合应该为每个“type1”事件都有一个存储桶,然后在该存储桶中列出在“type1”之前最多 10 分钟发生的类型列表"但在 type1 以我们为此实例找到的这些类型的数量开始计数之后结束。
因此,据我了解,我需要某种方式来进行查询/过滤以获取所有 type1 事件,然后以某种方式在我的聚合中引用我的结果的日期字段,但我找不到如何或是否有可能。
我希望这是有道理的。
很抱歉这个问题很长,但我认为这个抽象的例子会让我的问题更清楚。