嵌套文档上的ElasticSearch查询过滤器

时间:2017-11-27 11:34:26

标签: elasticsearch filter nested elasticsearch-aggregation

我需要根据嵌套属性过滤我的索引:

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 }
]

我想算一下Toto有多少,有多少没有。我尝试使用以下查询:

"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" filter(返回的数据太多)。

规则: "托托"只能在myNestedProperty中出现一次。如果我有" Toto",我就不能拥有" Dodo"或另一个。 它是一个分层对象:
- 托托
----塔塔郎 -------蒂蒂

由于它们的复杂性,我简化了数据,我希望用这个简单的对象足够清楚。

如何实现这一目标?提前谢谢。

0 个答案:

没有答案