2014-07-09 22 views
5

Tôi mới sử dụng ElasticSearch, vì vậy tôi cần trợ giúp về nó.Các khía cạnh cho cây lồng nhau với ElasticSearch

Tôi có truy vấn để tìm kiếm products có thể thuộc về nhiều số categories. Categories được kết hợp trong một cây lồng nhau.

Ví dụ dữ liệu:

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

Bên cạnh những kết quả tìm kiếm tôi cần phải nhận được categories cây bao gồm số lượng kết quả tìm kiếm trong mỗi category (trừ danh mục không có bất kỳ kết quả tìm kiếm).

Đối với ví dụ ở trên nó nên là:

  • loại đầu tiên (2)
    • tiểu thể loại đầu tiên (1)
  • loại thứ hai (1)

Can ai đó giải thích làm thế nào để làm điều này bằng cách sử dụng tập hợp của ElasticSearch?

Cảm ơn.

+0

Bạn có bao nhiêu cấp danh mục? – Val

Trả lời

0

Tôi nghĩ rằng bạn đang tìm kiếm một cái gì đó xung quanh này:

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

Áp dụng bộ lọc (hoặc bỏ qua) như trên nhu cầu và chắc chắn các lĩnh vực mà bạn thực hiện quy tụ (category_name và subcategory_name trong ví dụ này) không được đánh dấu.

Các vấn đề liên quan