【发布时间】:2021-04-09 20:27:50
【问题描述】:
我有如下文件:
{
"foo": null,
"bars": [
{
"baz": "BAZ",
"qux": null,
"bears": [
{
"fruit": "banana"
}
]
}
]
}
我想要fruit 术语的存储桶,其中计算bars 下有多少文档包含bears,每个给定fruit。例如,给定以下文件:
{
"foo": null,
"bars": [
{
"baz": "BAZ",
"qux": null,
"bears": [
{
"fruit": "banana"
},
{
"fruit": "banana"
},
{
"fruit": "apple"
}
]
},
{
"baz": "BAZ",
"qux": null,
"bears": [
{
"fruit": "banana"
}
]
}
]
}
{
"foo": null,
"bars": [
{
"baz": "BAZ",
"qux": null,
"bears": [
{
"fruit": "apple"
},
{
"fruit": "apple"
},
{
"fruit": "orange"
}
]
}
]
}
我想要如下所示的结果:
"buckets": [
{
"key": "banana",
"doc_count": 2
},
{
"key": "apple",
"doc_count": 2
},
{
"key": "orange",
"doc_count": 1
}
]
即,banana 显示为 2 的后代,不同的 bars,apple 出现为 2 的后代,不同的bars,orange 出现为1 的后代不同的bar。
现在我有以下聚合,计算总水果数:
{
"aggs": {
"global": {
"global": {},
"aggs": {
"bars": {
"nested": {
"path": "bars"
},
"aggs": {
"bears": {
"nested": {
"path": "bars.bears"
},
"aggs": {
"fruits": {
"terms": {
"field": "bars.bears.fruit"
}
}
}
}
}
}
}
}
}
}
这会导致以下结果:
"buckets": [
{
"key": "banana",
"doc_count": 3
},
{
"key": "apple",
"doc_count": 3
},
{
"key": "orange",
"doc_count": 1
}
]
这不是我想要的。是否可以修改此查询以计算包含每个 fruit 的不同 bars?
【问题讨论】:
标签: elasticsearch elasticsearch-aggregation