数据库字段
在之前介绍Elasticsearch字段的时候介绍过Elasticsearch的嵌套字段。在日常使用中,针对嵌套类型的聚合操作和普通字段类型有些许的不同。
嵌套类型
- nested
是ES对对象数组设置的类型,它可以对对象数组进行索引。
我们插入一个这样的数据。
{
"group" : "fans",
"user" : [
{
"first" : "John",
"last" : "Smith"
},
{
"first" : "Alice",
"last" : "White"
}
]
}
最后可以得到一个类似这样的结果
{
"group" : "fans",
"user.first" : [ "alice", "john" ],
"user.last" : [ "smith", "white" ]
}
数据模拟
我们现在有一个索引test_field2
里面存在这样结构的数据
{
"name": "内容1",
"desc": "描述1",
"channel": [
{
"name": "one",
"num": 28
},
{
"name": "two",
"num": 32
}
]
}
获取嵌套数据的和
按照普通字段的格式去查询
按照之前学习的内容依照普通的字段聚合分析的样子我们尝试使用下面的参数来进行求和,但是显然对于嵌套数据是不行的。
{
"aggs": {
"aggQuery": {
"sum": {
"field": "channel.num"
}
}
},
"size": 0
}
使用上面的参数并没有返回数据。
{
"took": 5,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"aggQuery":