2014-06-05 68 views
0

我有這個疑問與一些嵌套聚集ElasticSearch:較低/最低水平嵌套聚集min_doc_count

{ 
    "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

按ElasticSearch文檔min_doc_count可以與任何聚集中,包括直方圖

例如

{ 
    "aggs" : { 
     "tags" : { 
      "terms" : { 
       "field" : "tag" 
      } 
     } 
    } 
} 

以上查詢是不是date_histogram你仍然可以申請min_doc_count

{ 
    "aggs" : { 
     "tags" : { 
      "terms" : { 
       "field" : "tag", 
       "min_doc_count" : 1 
      } 
     } 
    } 
} 

唯一的事情是min_doc_count可以應用於任何彙總