大约有300,000个独立用户/客户。我们每个订单都有一个文件,所以我们有几百万份文件。
每个订单文件都是这样的
{{1}}
我需要每个唯一客户记录(customer_id)最新订单的“统计汇总”指标,即每个客户获取最新订单金额并执行统计数据汇总(忽略旧订单)
这在弹性搜索中是否可行?
答案 0 :(得分:0)
如果我正确理解您的要求,以下内容应该有效。由于我们可以访问查询,因此可以执行任何操作来限制数据集。在我的例子中,我只是说时间戳> = 1365440000:
{
"size": 0,
"query": {
"constant_score": {
"filter": {
"range": {
"timestamp": {
"gte": 1365440000
}
}
}
}
},
"aggs": {
"customers": {
"terms": {
"field": "customer_id"
},
"aggs": {
"order_stats": {
"stats": {
"field": "order_amount"
}
}
}
}
}
}
结果如下:
{
"took": 32,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 8,
"max_score": 0,
"hits": []
},
"aggregations": {
"customers": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 1001,
"doc_count": 4,
"order_stats": {
"count": 4,
"min": 13,
"max": 15,
"avg": 13.875,
"sum": 55.5
}
},
{
"key": 1002,
"doc_count": 4,
"order_stats": {
"count": 4,
"min": 13.5,
"max": 15.5,
"avg": 14.625,
"sum": 58.5
}
}
]
}
}
}
希望它有所帮助。