我有一些嵌套聚合的查询
{
"aggs": {
"by_date": {
"date_histogram": {
"field": "timestamp",
"interval": "day"
},
"aggs": {
"new_users": {
"filter": {
"query": {
"match": {
"action": "USER_ADD"
}
}
},
"aggs": {
"unique_users": {
"cardinality": {
"field": "user"
}
}
}
}
}
}
},
"size": 0
}
它产生的结果看起来像这样
"aggregations": {
"by_date": {
"buckets": [
{
"key_as_string": "1970-01-07T00:00:00.000Z",
"key": 518400000,
"doc_count": 210,
"new_users": {
"doc_count": 0,
"unique_users": {
"value": 0
}
}
},
{
"key_as_string": "1970-01-09T00:00:00.000Z",
"key": 691200000,
"doc_count": 6,
"new_users": {
"doc_count": 0,
"unique_users": {
"value": 0
}
}
},
......
我想要发生的是在最嵌套的子聚合上应用min_doc_count,这样我就看不到“unique_users”(在这种情况下)返回零值。
问题是min_doc_count不能应用于我的查询,而不是顶层的date_histogram。
ES查询语言是否支持这样的内容?有任何已知的解决方法吗?
谢谢, 乔治
答案 0 :(得分:0)
根据ElasticSearch文档,min_doc_count可以与包括histogram
在内的任何聚合一起使用例如
{
"aggs" : {
"tags" : {
"terms" : {
"field" : "tag"
}
}
}
}
上面的查询不是date_histogram,你仍然可以应用min_doc_count
{
"aggs" : {
"tags" : {
"terms" : {
"field" : "tag",
"min_doc_count" : 1
}
}
}
}
唯一的事情是min_doc_count可以应用于任何聚合