【发布时间】:2021-05-29 05:26:45
【问题描述】:
鉴于以下映射,其中变体是 nested 类型,选项是 flattened 类型:
{
"doc_type" : "product",
"id" : 1,
"variants" : [
{
"options" : {
"Size" : "XS",
},
"price" : 1,
},
{
"options" : {
"Size" : "S",
"Material": "Wool"
},
"price" : 6.99,
},
]
}
我想运行一个聚合,生成以下格式的数据:
{
"variants.options.Size": {
"buckets" : [
{
"key" : "XS",
"doc_count" : 1
},
{
"key" : "S",
"doc_count" : 1
},
],
},
"variants.options.Material": {
"buckets" : [
{
"key" : "Wool",
"doc_count" : 1
}
],
},
}
我可以很容易地做这样的事情:
"aggs": {
"variants.options.Size": {
"terms": {
"field": "variants.options.Size"
}
},
"variants.options.Material": {
"terms": {
"field": "variants.options.Material"
}
}
}
这里需要注意的是,我们使用flattened 类型作为选项,因为选项中的字段是动态的,所以我无法事先知道我们想要聚合在Size 和Material。
本质上,我想告诉 Elasticsearch 它应该聚合它在options 下找到的任何键。有没有办法做到这一点?
【问题讨论】:
标签: elasticsearch kibana elastic-stack elasticsearch-aggregation