Thi*_*t J 6 facets elasticsearch date-histogram
我在ElasticSearch中有一堆索引的文档,我需要获取以下数据:
对于每个月,获取当月每个工作日的平均文档数(或者如果不可能,则使用20天作为默认值).
我已经使用聚合将我的数据汇总到了几个桶中date histogram.我尝试嵌套stats存储桶,但此聚合使用从文档字段中提取的数据,而不是从父存储桶中提取的数据.
这是我目前的查询:
{
"query": {
"match_all": {}
},
"aggs": {
"docs_per_month": {
"date_histogram": {
"field": "created_date",
"interval": "month",
"min_doc_count": 0
}
"aggs": {
'???': '???'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
为了使我的问题更清楚,我需要的是:
date_histogram聚合已经完成)小智 9
对于仍然感兴趣的任何人,您现在可以使用avg_bucket聚合。它仍然有点棘手,因为您不能简单地avg_bucket在date_historgram聚合结果上运行,而是使用value_count具有某些唯一值的辅助聚合并且它工作正常:)
{
"size": 0,
"aggs": {
"orders_per_day": {
"date_histogram": {
"field": "orderedDate",
"interval": "day"
},
"aggs": {
"amount": {
"value_count": {
"field": "dateCreated"
}
}
}
},
"avg_daily_order": {
"avg_bucket": {
"buckets_path": "orders_per_day>amount"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您基本上需要的是这样的东西(这不起作用,因为它不是可用的功能):
{
"query": {
"match_all": {}
},
"aggs": {
"docs_per_month": {
"date_histogram": {
"field": "date",
"interval": "month",
"min_doc_count": 0
},
"aggs": {
"average": {
"avg": {
"script": "doc_count / 20"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为无法doc_count从“父”聚合访问。
但是,这在 Elasticsearch 的 2.x 分支中是可能的,目前正在积极开发中: https: //github.com/elastic/elasticsearch/issues/8110 这个新功能将添加第二层操作聚合的结果(桶),它不仅是您的用例,而且是许多其他用例。
除非您想尝试一些想法或在应用程序中执行自己的计算,否则您需要等待此功能。
| 归档时间: |
|
| 查看次数: |
2524 次 |
| 最近记录: |