2014-07-09 34 views
5

ElasticSearch için yeni oldum, bu yüzden yardıma ihtiyacım var.ElasticSearch ile iç içe ağaç için yönler

Birçok categories'a ait olan products için arama yapmak için bir sorgum var. Categories yuvalanmış bir ağaçta birleştirilmiştir.

Örnek veriler: Ben (herhangi bir arama sonuçlarında olmadan hariç kategorilerde) her category arama sonuçlarının sayısı dahil categories ağacı almak gerekir arama sonuçlarında yanında

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

.

Yukarıdaki örnek için bu olmalıdır:

  • Birinci kategori (2)
    • ilk alt kategori (1)
  • İkinci kategori (1)

Can Birisi ElasticSearch’un toplanmalarını kullanarak bunu nasıl yapacağını açıklıyor?

Teşekkürler.

+0

Kaç tane kategori seviyeniz var? – Val

cevap

0

Benzer ihtiyacım vardı ve Nested nesneleri kullanmıştım.

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

filtreleri uygulama (veya ihmal) ihtiyaca olarak ve alanlar hangi sen toplamalar emin olun: İşte o konuyu

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

0

Bunu etrafında bir şey için arama bulunmaktadır düşünüyorum (bu örnekte category_name ve subcategory_name), not_analyzed olmak için.