在Elasticsearch中有一个父子结构代表一个order
个order_revision
个孩子,我想生成price
的直方图,显示quantity
的总和。 / p>
{
"_type": "order",
"_id": "1063220887",
"_score": 1,
"_source": {
"order_id": "1063220887",
"product_id": "10446350",
"timestamp": 1462713302000
}
}
{
"_type": "order_revision",
"_id": "10234234",
"_parent": "1063220887",
"_source": {
"price": 9,
"quantity": 3,
"revision": 361,
"timestamp": 1462712196000
}
}
以下聚合基本上有效但返回所有现有修订的总和。
{
"aggs": {
"orders": {
"filter": {
"has_parent": {
"parent_type": "order"
}
},
"aggs": {
"quantity_per_price": {
"histogram": {
"field": "price",
"interval": 1
}
"aggs": {
"sum": {"field": quantity"}
}
}
}
}
}
}
在最终版本中,它应仅返回每个订单的最新版本(最高/最新quantity
)的timestamp
字段的总和。
我不完全确定如何提出这样的聚合,按order_id
进行分组,只选择最新的子,我不确定这种父子结构是否最适合对这些数据进行建模。 / p>
答案 0 :(得分:0)
最简单的实现是在文档中标记最新版本("latest": true
)。然后,添加查询或filter
聚合以仅过滤最新修订版就成了一个简单的问题。