ElasticSearch:min_doc_count在较低/最低级嵌套聚合

时间:2014-06-05 21:50:57

标签: elasticsearch

我有一些嵌套聚合的查询

{
   "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查询语言是否支持这样的内容?有任何已知的解决方法吗?

谢谢, 乔治

1 个答案:

答案 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可以应用于任何聚合