我有一个非常简单的查询,该查询获取关键字“ iphone x”的结果,然后根据热门歌曲查找前五个类别(level2),然后查找每个level2类别的后续六个子类别(level3)。
{
"size": 0,
"aggs": {
"categoryId": {
"filter": {
"bool": {
"filter": [
{
"term": {
"title.list": "iphone"
}
},
{
"term": {
"title.list": "x"
}
}
]
}
},
"aggs": {
"results": {
"terms": {
"field": "category.l2.id",
"size": 5
},
"aggs": {
"categoryName": {
"terms": {
"field": "category.l2.id.keyword",
"size": 1
}
},
"subCategoryName": {
"terms": {
"field": "category.l3.id",
"size": 6
}
}
}
}
}
}
}
}
此查询产生结果
"results": {
"buckets": [{
"key": 9394,
"categoryName": { ... },
"subCategoryName": { ... }
},
{
"key": 176970,
"categoryName": { ... },
"subCategoryName": { ... }
},
{
"key": 43304,
"categoryName": { ... },
"subCategoryName": { ... }
},
{
"key": 63,
"categoryName": { ... },
"subCategoryName": { ... }
},
{
"key": 15052,
"categoryName": { ... },
"subCategoryName": { ... }
}
]
}
现在我面临的问题是,尽管这个结果很好,但我想在这个结果中再显示一个level2类别。即。类别“ 9355”。
我想查询一个包含上述结果中的9355类别的查询。所以我尝试了include
过滤器
"terms": {
"field": "category.l2.id",
"size": 5,
"include": [
9355
]
}
但是我只得到了9355分类结果
{
"key": 9355,
"categoryName": {...},
"subCategoryName": { ... }
}
include
过滤器无法正常工作。假设我想在聚合结果中实际包含给定的术语,我该怎么做?
因此结果应返回5 + 1 = 6个level2类别及其子类别。