我们正在使用多级聚合。我们有城市水桶,每个水桶都有水桶。 对于少数文档,Class为Null,在这种情况下,为City返回一个空桶。请参考以下回复:
示例输出:
"aggregations":
{
"CITY":{
"buckets":[
{
"key":"CITY 1",
"doc_count":2
"CLASS":{
"buckets":[
{
"key":"CLASS A",
"top_tag_hits":{
}
}
]
}
},
{
"key":"CITY 2",
"doc_count":2
"CLASS":{
"buckets":[
]
}
},
]
}
}
此处关键的CITY 2有一个空桶CLASS,因为关键CITY 2下的所有文件都将CITY字段设为null。但我们有一个医生计数。 当术语字段为空时,我们如何在桶下返回文件
更新: CLASS的字段映射:
"CLASS":
{
"type": "string",
"index_analyzer": "text_with_autocomplete_analyzer",
"search_analyzer": "text_standard_analyzer",
"fields": {
"raw": {
"type": "string",
"null_value" : "na",
"index": "not_analyzed"
},
"partial_matching": {
"type": "string",
"index_analyzer": "text_with_partial_matching_analyzer",
"search_analyzer": "text_standard_analyzer"
}
}
}
请参阅映射以解决问题。
答案 0 :(得分:1)
您可以使用missing
setting或terms
聚合来处理缺少值的存储桶。所以在你的情况下,你会这样做:
{
"aggs": {
"CITY": {
"terms": {
"field": "city_field"
},
"aggs": {
"CLASS": {
"terms": {
"field": "class_field",
"missing": "NO_CLASS"
}
}
}
}
}
}
使用此设置,所有没有class_field
字段(或空值)的文档将落在NO_CLASS
存储桶中。
PS:请注意,这仅适用于ES 2.0,而不是之前的版本。