2016-01-14 31 views
3

這裏是我有獲得的特別條款的數量在一個領域中elasticsearch

DOC1

{ 
"occassion" : "Birthday", 
"dessert": "gingerbread" 
} 

DOC2

{ 
"occassion" : "Wedding", 
"dessert": "friand" 
} 

doc3的

{ 
"occassion":"Bethrothal" , 
"dessert":"gingerbread" 
} 

一些樣本文檔當我給簡單的術語聚合N,場上「甜點」,我得到這樣的結果類似下面

"aggregations": { 
    "desserts": { 
    "doc_count_error_upper_bound": 0, 
    "sum_other_doc_count": 0, 
    "buckets": [ 
     { 
     "key": "gingerbread", 
     "doc_count": 2 
     }, 
     { 
     "key": "friand", 
     "doc_count": 1 
     } 
    ] 
    } 
} 
} 

但是,如果這裏的問題是,如果有很多文件,我需要知道有多少獨特的關鍵字進行下字段名現有「甜點「,要花費我很多時間才能搞清楚。是否有解決指定字段名稱下的唯一條款數量的工作?

回答

2

基數聚集似乎是你在找什麼:https://www.elastic.co/guide/en/elasticsearch/guide/current/cardinality.html

查詢此:

{ 
    "size" : 0, 
    "aggs" : { 
     "distinct_desserts" : { 
      "cardinality" : { 
       "field" : "dessert" 
      } 
     } 
    } 
} 

會回到這樣的事情:

"aggregations": { 
    "distinct_desserts": { 
    "value": 2 
    } 
} 
+0

基數是一個近似的聚集。請記住使用'precision_threshold'選項來微調計數的準確性。 –

0

我建議基數與準確的結果更高的precision_threshold。

GET /cars/transactions/_search 
{ 
    "size" : 0, 
    "aggs" : { 
     "count_distinct_desserts" : { 
      "cardinality" : { 
       "field" : "dessert", 
       "precision_threshold" : 100 
      } 
     } 
    } 
}