2014-07-09 2 views
5

ElasticSearch를 처음 사용하므로 도움이 필요합니다.ElasticSearch가 포함 된 중첩 트리의 패싯

많은 에 속하는 products을 검색하는 쿼리가 있습니다. Categories은 중첩 된 트리에서 결합됩니다.

데이터 예 : 나는 (모든 검색 결과가없는 제외한 범주) 각 category에서 검색 결과의 수를 포함하여 categories 트리를 얻을 필요가 검색 결과 게다가

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] 
    } 
] 

.

위의 예는 같아야

  • 먼저 카테고리 (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" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

필터를 적용 (또는 생략) 필요에 같이 필드가있는 당신이 집계을해야합니다 : 여기에 해당 스레드

How to narrow down the current aggregation context to a specific scope within set of documents returned from Filter Aggregation?

0

난 당신이 주변에 뭔가를 찾기 위해 생각을하다 (이 예에서 category_name W subcategory_name)을 분석하지 않도록하십시오.