我在ElasticSearch中有一个索引,其中包含有关用户与我平台的连接信息的文档。我想构建一个带有日期聚合的查询,我可以计算在两个给定日期之间每天连接的所有用户。
我有3个相关字段:user_id
,connection_time_start
,connection_time_end
。我这样做的是查询:
{
"size": 0,
"query": {
"bool": {
"must": [
{
"range": {
"connection_time_start": {
"lte": "2017-08-04T23:59:59"
}
}
},
{
"range": {
"connection_time_end": {
"gte": "2017-08-02T00:00:00"
}
}
}
]
}
},
"aggs": {
"franja_horaria": {
"date_histogram": {
"field": "connection_time_start",
"interval": "day",
"format": "yyyy-MM-dd"
},
"aggs": {
"ids": {
"cardinality": {
"field": "user_id"
}
}
}
}
}
}
此查询作为结果给出了包含在第2,3和2天具有起始连接的用户数的桶。 8月4日。问题是有些用户的连接从第2天开始,到第3天结束,甚至在第4天结束。
这些用户应计算每天的连接用户数,但因为我使用connection_time_start进行聚合只计算当天。
我尝试在聚合中添加一个范围,例如这个(https://www.elastic.co/guide/en/elasticsearch/reference/2.4/search-aggregations-bucket-daterange-aggregation.html)但是没有得到好结果。
有人可以帮我这个吗?提前谢谢!