假设我有一个包含嵌套文档的索引,看起来像这样:
{
"id" : 1234
"cars" : [{
"id" : 987
"name" : "Volkswagen"
}, {
"id": 988
"name" : "Tesla"
}
]
}
我现在希望获得一个“car”文档的计数聚合,这些文档符合特定的条件,例如符合搜索查询。我的初始尝试是以下查询:
{
"query" : {
"nested" : {
"path" : "cars",
"query" : {
"query_string" : {
"fields" : ["cars.name"],
"query" : "Tes*"
}
}
}
},
"aggregations" : {
"cars" :{
"nested" : {
"path" : "cars"
},
"aggs" : {
"cars" : {
"terms" : {
"field" : "cars.id"
}
}
}
}
}
}
我本来希望得到一个聚合结果,只包含以“Tes”开头的汽车的ID。然而,聚合操作实际上使用了所有包含匹配嵌套文档的顶级文档中的汽车。也就是说,在上面的例子中,“大众”也会被计算在内,因为顶级文档还包含一辆匹配的汽车。
我该如何只获取匹配嵌套文档的聚合结果呢?