在检索数组字段上的聚合总和时遇到困难。
我想基于两个字段执行聚合:casting.name和casting.category。
My Schema:
"mappings": {
"movies": {
"properties": {
"title" : { "type": "string" },
"year" : { "type": "integer" },
"casting": {
"type": "nested",
"properties": {
"name": { "type": "string" },
"quantity": { "type": "long" }
}
}
}
}
}
我尝试使用基于casting.name字段的TermsAggregation,带有子聚合,这是另一个基于casting.quantity字段的TermsAggregation总和。
My Query representation is shown below:
GET groups/_search?search_type=count
{
"query" : {
"terms" : {
"movies.casting.name" : ["gap"],
"minimum_should_match":1
}
},
"aggregations" : {
"termsAggregation" : {
"terms" : {
"field" : "movies.casting.name"
},
"aggregations": {
"quantitySum": {
"filter" : {
"term" : {
"groups.permissions.product" : "ycsfa" }
},
"aggregations" : {
"gapSum" : {
"sum" : {
"field" : "movies.casting.quantity" }
}
}
}
}
}
}
}
Showing wrong results ...
结果将总结铸造中的所有名称和数量字段......
这里有什么想法吗?
答案 0 :(得分:0)
您需要使用nested Query
和Nested Aggregation
,因为您的字段为nested
:
GET groups/_search?search_type=count
{
"query": {
"nested": {
"path": "casting",
"query": {
"terms": {
"movies.casting.name": [
"gap"
],
"minimum_should_match": 1
}
}
}
} ,
"aggregations": {
"nested": {
"path": "casting"
},
"aggs": {
"termsAggregation": {
"terms": {
"field": "movies.casting.name"
},
"aggregations": {
"gapSum": {
"sum": {
"field": "movies.casting.quantity"
}
}
}
}
}
}
}