假设文档集合如下所示:
{
"product_id": "11111111-0000-0000-0000-111111111111",
"product_name": "Product A",
"date": "2020-11-25",
"sold_in_countries": [
{
"name": "Country A",
"count": 100
},
{
"name": "Country B",
"count": 200
}
]
}
我想列出:对于每个国家,销售前5名的产品是什么(基于国家对象内相应“计数”的总和)。
由于“name”、“count”在嵌套对象中,我们需要一个嵌套聚合。但是“产品名称”不是,因此我们需要“反向嵌套”。我最终得到了:
"aggs": {
"country_name": {
"nested": {
"path": "sold_in_countries"
},
"aggs": {
"country_name": {
"terms": {
"field": "sold_in_countries.name",
"size": 5,
"order": {
"sale_count": "desc"
}
},
"aggs": {
"sale_count": {
"sum": {
"field": "sold_in_countries.count"
}
},
"product_name": {
"reverse_nested": {},
"aggs": {
"product_name": {
"terms": {
"field": "product_name.keyword",
"order": {
"sale_count": "desc"
}
},
"aggs": {
"sale_count": {
"nested": {
"path": "sold_in_countries"
},
"aggs": {
"sale_count": {
"sum": {
"field": "sold_in_countries.count"
}
}
}
}
}
}
}
}
}
}
}
}
}
问题:第一个按国家/地区名称进行的聚合认为“销售计数”是正确的(国家/地区a为100,国家/地区b为200),而第二个按产品名称进行的聚合认为“销售计数”是国家/地区对象中所有“计数”的总和(300)。怎么办?
暂无答案!
目前还没有任何答案,快来回答吧!