我希望在buckets.length (存储桶的数量/计数)具有最小计数的聚合上获得结果,就像在SQL中一样。
(在此特定场景中,访问过至少5天的站点访问者。)
我的问题的一部分:
"aggs": {
"site_visitors": {
"aggs": {
"users": {
"terms": {
"field": "user_id",
"size": 0
},
"aggs": {
"daily_counts": {
"date_histogram": {
"field": "timestamp",
"interval": "1d"
}
}
}
}
}
}
}这里我们有一个包含5个结果的存储桶(buckets.length)。大多数存储桶不会有5个或更多的结果,我不想要所有这些结果。
{
"key": 123456,
"doc_count": 10,
"days_count": {
"buckets": [
{
"key_as_string": "2017-04-05T00:00:00.000Z",
"key": 1491350400000,
"doc_count": 2
},
{
"key_as_string": "2017-04-22T00:00:00.000Z",
"key": 1492819200000,
"doc_count": 1
},
{
"key_as_string": "2017-04-25T00:00:00.000Z",
"key": 1493078400000,
"doc_count": 4
},
{
"key_as_string": "2017-04-30T00:00:00.000Z",
"key": 1493510400000,
"doc_count": 2
},
{
"key_as_string": "2017-05-04T00:00:00.000Z",
"key": 1493856000000,
"doc_count": 1
}
]
}
}我希望得到的结果在每个存储桶中至少有5个或更多的结果(例如: gte),而不是doc_count,而是buckets.length。
有没有办法做到这一点?
发布于 2017-07-20 22:07:34
您可以在date_histogram聚合中添加"min_doc_count": 5参数。
"aggs": {
"site_visitors": {
"aggs": {
"users": {
"terms": {
"field": "user_id",
"size": 0
},
"aggs": {
"daily_counts": {
"date_histogram": {
"field": "timestamp",
"interval": "1d"
}
},
"min_5_buckets_selector": {
"bucket_selector": {
"buckets_path": {
"count": "daily_counts._bucket_count"
},
"script": {
"inline": "params.count >= 5"
}
}
}
}
}
}
}
}https://stackoverflow.com/questions/45216942
复制相似问题