【发布时间】:2018-05-10 15:19:00
【问题描述】:
我需要根据嵌套属性过滤我的索引:
myNestedProperty: [
{ id: 1, displayName: toto },
{ id: 2, displayName: tata },
{ id: 3, displayName: titi }
]
myNestedProperty: [
{ id: 4, displayName: dodo },
{ id: 5, displayName: dada },
{ id: 6, displayName: didi }
]
我想数一下有多少人有托托,有多少人没有。我尝试使用以下查询:
"aggs": {
"HasToto": {
"filter": {
"nested": {
"path": "myNestedProperty",
"query": {
"match": {
"myNestedProperty.id": "1"
}
}
}
}
},
"NoToto": {
"filter": {
"nested": {
"path": "myNestedProperty",
"query": {
"bool": {
"must_not": [
{"match": {
"myNestedProperty.id": "1"
}}
]
}
}
}
}
}
}
“HasToto”似乎返回了预期的结果,但“NoToto”过滤器的情况并非如此(返回的数据过多)。
规则:
“Toto”只能在 myNestedProperty 中出现一次。如果我有“Toto”,我就不能有“Dodo”或另一个。
这是一个分层对象:
-- 多多
---- 塔塔
-------- 蒂蒂
由于数据的复杂性,我对其进行了简化,我希望这个简单的对象足够清晰。
请问如何实现?提前致谢。
【问题讨论】:
-
您想要计算属性(如在具有 id=1 的对象中)或在 id=1 的数组中具有对象的文档。
-
计数“HasToto”工作正常,我的问题是 must_not。我需要计算不需要的文件
标签: elasticsearch filter nested elasticsearch-aggregation