我是ElasticSearch的新手,所以我需要一些帮助。
我有一个查询来搜索可能属于许多products
的{{1}}。 categories
组合在一个嵌套树中。
示例数据:
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]
}
]
树,其中包括每个categories
中的搜索结果数量(不包括任何搜索结果的类别)。
对于上面的例子,它应该是:
有人可以使用ElasticSearch的聚合解释如何执行此操作吗?
感谢。
答案 0 :(得分:0)
我有类似的需求并使用了嵌套对象。这是该线程
答案 1 :(得分: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)进行not_analyzed。