我们正在使用多级聚合。我们有城市桶,每个桶都有阶级桶。对于少数文档,类为空,在这种情况下,将为城市返回一个空桶。请参考以下回复:
示例输出:
"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":[
]
}
},
]
}
}Run Code Online (Sandbox Code Playgroud)
这里,键 CITY 2 有一个空的 CLASS 桶,因为键 CITY 2 下的所有文档的 CITY 字段都为空。但我们正在统计文档数量。terms字段为null时如何返回bucket下的文档
更新:类别的字段映射:
"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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
请参考映射来解决问题。
您可以使用聚合missing设置来处理缺少值的存储桶terms。所以在你的情况下,你会这样做:
{
"aggs": {
"CITY": {
"terms": {
"field": "city_field"
},
"aggs": {
"CLASS": {
"terms": {
"field": "class_field",
"missing": "NO_CLASS"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过此设置,所有没有class_field字段(或空值)的文档都将放入NO_CLASS存储桶中。
PS:请注意,这只适用于 ES 2.0,而不适用于之前的版本。
| 归档时间: |
|
| 查看次数: |
2593 次 |
| 最近记录: |