我有看起来像
的文件 {
"_id": "56161cb3cbdad2e3b437fdc3",
"_type": "Comunity",
"name": "public",
"data": [
{
"title": "sonder",
"creationDate": "2015-08-22T03:43:28 -03:00",
"quantity": 0
},
{
"title": "vule",
"creationDate": "2014-05-17T12:35:01 -03:00",
"quantity": 0
},
{
"title": "omer",
"creationDate": "2015-01-31T04:54:19 -02:00",
"quantity": 3
},
{
"title": "sonder",
"creationDate": "2014-05-22T05:09:36 -03:00",
"quantity": 3
}
]
}
映射:
comunityDocument": {
"_source": {
"includes": [
"meta.*"
]
},
"properties": {
"doc": {
"dynamic": "false",
"properties": {
"data": {
"type": "nested",
"include_in_parent": true,
"properties": {
"title": {
"type": "string"
},
"creationDate": {
"type": "date",
"format": "dateOptionalTime"
},
"quantity": {
"type": "integer"
}
}
},
"name": {
"type": "string",
"index": "not_analyzed"
}
}
},
"meta": {
"include_in_all": false,
"properties": {
"expiration": {
"type": "long",
"include_in_all": false
},
"flags": {
"type": "long",
"include_in_all": false
},
"id": {
"type": "string",
"include_in_all": false
},
"rev": {
"type": "string",
"include_in_all": false
}
}
}
}
}
我的查询
{
"size": 0,
"aggs": {
"filterAgg": {
"filter": {
"nested": {
"path": "comunityDocument.doc.data",
"filter": {
"terms": {
"comunityDocument.doc.data.quantity": [
0
]
}
}
}
}
}
}
}
结果我必须得到数量等于0的所有“数据”文件,但我不明白。嵌套聚合的奇怪之处在于它的工作原理,但不是嵌套的过滤器。
答案 0 :(得分:1)
如果comunityDocument
是类型,则正确的查询应为
{
"size": 0,
"aggs": {
"filterAgg": {
"filter": {
"nested": {
"path": "doc.data",
"filter": {
"terms": {
"doc.data.quantity": [
0
]
}
}
}
}
}
}
}
答案 1 :(得分:1)
实现这一点的正确查询:
{
"size": 0,
"aggs": {
"Nest": {
"nested": {
"path": "data"
},
"aggs": {
"Filtering": {
"filter": {
"term": {
"quantity": 0
}
}
}
}
}
}
}
quantity = 0
我使用了question, you previously asked中提供的测试数据。
{
"took": 44,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 0,
"hits": []
},
"aggregations": {
"Nest": {
"doc_count": 9,
"Filtering": {
"doc_count": 3
}
}
}
}