2014-09-24 150 views
0

我正在嘗試使用elasticsearch構建類別向下鑽取。Elasticsearch聚合

我遇到了顯示類別數問題。

如果我運行此查詢(紅,休閒褲),類別彙總只會顯示偶然的計數。 我可以檢索其他類別在單個查詢計數(如鞋,牛仔褲,連衣裙)

實施例過濾器:

顏色:

- 紅色(選擇爲布爾查詢項)

分類:

Shoes 
Pants 
    -Jeans 
    - Casual (selected as a bool query term) 
Dresses 

回答

0

如果我理解的很好,您似乎需要計算所有類別的聚合,然後對其進行過濾,以一次只顯示一個類別。

這可以使用post_filter來實現(見documentation)。這是一個過濾器,應用聚合已經計算出來。

在你的情況,而不是查詢是這樣的:

{ 
    "query": { 
    "bool": { 
     "must": [ 
     {"term": {"color": "red"} }, 
     {"term": {"category": "casual"}} 
     .... 
     ] 
    } 
    }, 
    "aggs": { 
    ... 
    } 
} 

您可以使用此:

{ 
    "query": { 
    "bool": { 
     "must": [ 
     {"term": {"color": "red"} } 
     ... 
     ] 
    } 
    }, 
    "aggs": { 
    ... 
    }, 
    "post_filter": { 
    {"term": {"category": "casual"}} 
    } 
} 

和計算的聚合當categoryterm過濾器將不會被考慮。