2014-07-09 61 views
5

我是ElasticSearch的新手,所以我需要一些幫助。使用ElasticSearch嵌套樹的方面

我有一個查詢可以屬於很多categories搜索productsCategories組合在一個嵌套樹中。

實施例的數據:

categories: [ 
    { 
    id: 1, 
    name: 'First category', 
    categories:[ 
     { 
     id: 12, 
     name: 'First subcategory' 
     }, 
     { 
     id: 13, 
     name: 'Second subcategory' 
     } 
    ] 
    }, 
    { 
    id: 2, 
    name: 'Second category' 
    } 
], 
products: [ 
    { 
    id: 1, 
    name: 'First product', 
    categories_ids: [2, 12] 
    }, 
    { 
    id: 2, 
    name: 'Second product', 
    categories_ids: [1] 
    } 
] 

除了搜索結果我需要得到categories樹包括每個category搜索結果(不包括類別而沒有任何的搜索結果)的數目。

對於上面的例子,應該是:

  • 第一類(2)
    • 第一子類(1)
  • 次分類(1)

燦有人解釋如何使用ElasticSearch的聚合來做到這一點?

謝謝。

+0

你有幾個類別等級? – Val

回答

0

我認爲你是在尋找解決此事情:

{ 
    "aggs": { 
    "category_agg": { 
     "terms": { 
     "field": "category_name" 
     }, 
     "aggs": { 
     "sub_category_agg": { 
      "terms": { 
      "field": "sub_category" 
      }, 
      "filter": { 
      "term": { 
       "sub_category": "First subcategory" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

應用過濾器(或省略)的需要和一定的領域上,你做聚合(本例中的category_name和subcategory_name)不被分析。