所以请考虑这些数据:
映射
{
"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"
}
...
我们的想法是,有些事件会不时地独立发生,我们会在它们开始和结束时记录。
我需要的是进行聚合,但我不能在没有外部脚本的情况下想办法。
聚合应该给我:所有 eventTypes 的列表,它发生在 eventType " type1" 开始前10分钟到0分钟在" type1" 开始之后结束。
我需要做的不是特定的" type1"但是对于所有这些事件,所以我的聚合应该为每个" type1" 事件设置一个存储桶,然后在该存储桶中显示在之前10分钟发生的类型列表" type1" 但在type1开头后以我们为此实例找到的那些类型的数量开始计算。
所以根据我的理解,我需要某种方式来使查询/过滤器获取所有type1事件,然后以某种方式在我的聚合中引用我的结果的日期字段,但我无法找到如何或是否它根本不可能。
我希望这是有道理的。
很抱歉这个很长的问题,但我认为这个抽象的例子会让我的问题更清楚。
答案 0 :(得分:1)
Elasticsearch聚合构建仅依赖于当前文档属性的存储桶。在这里,您尝试根据其他文档的值构建存储桶(概念上这是一个连接) - 这是不可能的。