我需要对嵌套数据进行汇总
{
"size": 0,
"aggs": {
"group_by_day": {
"date_histogram": {
"field": "timestamp",
"interval": "day"
},
"aggs": {
"corridors": {
"nested": {
"path": "rowData"
},
"aggs": {
"Entrance": {
"filter": {
"match": {
"rowData.corridors.name": "Office"
}
},
"aggs": {
"SumExit": {
"sum": {
"field": "rowData.corridors.north"
}
},
"SumIn": {
"sum": {
"field": "rowData.corridors.south"
}
}
}
}
}
}
}
}
},
"query": {
"bool": {
"must": [
{
"range": {
"timestamp": {
"gte": "2019-06-10T00:00:00.000",
"lte": "2019-06-18T06:11:18.618Z"
}
}
},
{
"term": {
"account": "5ca195b535374512130add60"
}
},
{
"term": {
"device._id": "5cae98291b97031201d797a0"
}
}
]
}
}
}
这是我得到的数据的一个例子
{
"corridor": [
{
"name": "Entrance",
"south": 2,
"north": 1
},
{
"name": "Office",
"south": 2,
"north": 1
}
]
}
我需要根据名称ex:entrance汇总南北和 但是我写的查询给了我入口和办公室的总和 我怎样才能只过滤入口的总和
答案 0 :(得分:0)
在您的情况下,它的rowData.corridors
需要嵌套字段。因此,如果我假设您的映射是正确的,则只需更正聚合的这一部分:
"aggs": {
"corridors": {
"nested": {
"path": "rowData.corridors" <-- HERE
},
...
似乎您的映射中配置的嵌套字段是rowData。但是,使用此配置,所有通道都在嵌套的“ rowData”文档中展平。
我希望我的答案足够清楚