嵌套类型字段内的字段聚合

Aggregation of fields inside nested type field

我想聚合位于 nested 类型字段内的 keyword 类型字段。嵌套字段的映射如下:

"Nested_field" : {
    "type" : "nested",
    "properties" : {
        "Keyword_field" : {
            "type" : "keyword"
        }
    }
}

我用来聚合的查询部分如下:

"aggregations": {
    "Nested_field": {
        "aggregations": {
            "Keyword_field": {
                "terms": {
                    "field": "Nested_field.Keyword_field"
                }
            }
        },
        "filter": {
            "bool": {}
        }
    },
}

但这并没有返回正确的聚合。即使存在 Keyword_field 值现有文档,查询 returns 0 个存储桶。所以,我的聚合查询有问题。谁能帮我找出问题所在?

我认为您需要在其中提供嵌套路径。这在 ES 5 中有效,但看起来您使用的是基于 "aggregations" 与 "aggs" 的 6,所以如果它不起作用请告诉我,我会放弃这个答案。试一试:

{
    "aggregations": {
        "nested_level": {
            "nested": {
                "path": "Nested_field"
            },
            "aggregations": {
                "keyword_field": {
                    "terms": {
                        "field": "Nested_field.Keyword_field"
                    }
                }
            }
        }
    }
}