我们使用多级聚合。我们有城市的桶,每个桶都有阶级的桶。对于Few documents,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为空。但我们正在清点医生。terms字段为空,如何返回bucket下的单据
更新:CLASS的字段Map:
"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"
}
}
}
请参考Map来解决该问题。
1条答案
按热度按时间qltillow1#
您可以使用
terms
aggregation的missing
设置来处理缺少值的存储桶。所以在你的情况下,你会这样做:通过这种设置,所有没有
class_field
字段(或空值)的文档都将落在NO_CLASS
存储桶中。PS:注意,这只适用于ES 2.0之后的版本,而在之前的版本中不适用。