【发布时间】:2015-05-06 03:29:42
【问题描述】:
鉴于 Elasticsearch 中的以下映射和文档,我如何获得一组匹配特定条件的嵌套文档的最小/最大/平均值?例如,我怎样才能让他们成为狗的宠物的最小年龄?我的过滤器得到了正确的养狗的人,但是我如何制作最小值然后根据正确的嵌套文档进行计算。
(1) 映射
{
"myIndex": {
"mappings": {
"person": {
"properties": {
"name": {
"type": "string"
},
"pets": {
"type": "nested",
"properties": {
"age": {
"type": "long"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
}
}
}
}
}
(2) 数据
{
"name": "bob",
"pets": [
{
"type": "dog",
"name": "wolfie",
"age": 20
},
{
"type": "cat",
"name": "kitty",
"age": 6
}
]
}
{
"name": "bill",
"pets": [
{
"type": "fish",
"name": "goldie",
"age": 2
},
{
"type": "cat",
"name": "meowie",
"age": 18
}
]
}
(3) 查询与聚合
{
"query": {
"filtered": {
"filter": {
"nested": {
"path": "pets",
"filter" : {
"terms": {
"pets.type": ["dog"]
}
}
}
}
}
},
"aggs": {
"minage": {
"nested": {
"path": "pets"
},
"aggs": {
"minage": {
"min": {
"field": "age"
}
}
}
}
}
}
【问题讨论】:
标签: elasticsearch