我有带有动态属性(过滤器)的产品。我需要根据搜索查询动态获取过滤器每个值的计数。
我对产品索引有以下映射:
{
"products":{
"mappings":{
"properties":{
...
"dynamicFilters":{
"type":"nested",
"properties":{
"name":{
"type":"keyword"
},
"value":{
"type":"keyword"
}
}
},
...
}
}
}
}
以及以下汇总请求:
'size': 0,
'query': {
'bool': {
'must': {
'match': {
'category': 'Notebooks'
}
},
'filter': {
{'nested': {
'path': 'dynamicFilters',
'query': {
'bool': {
'filter': {
{'term': {'dynamicFilters.name': 'processor'}},
{'terms': {'dynamicFilters.value': {'Ryzen 7'}}},
},
}
}
},
}
}
},
'aggs': {
//'dynamicFilters': {
//'global': {}, <-- global type commented here
//'aggs': {
'dynamicFilters': {
'nested': {
'path': 'dynamicFilters',
},
'aggs': {
'name': {
'terms': {
'field': dynamicFilters.name',
'size': 20
},
'aggs': {
'value': {
'terms': {
'field': 'dynamicFilters.value',
'size': 20
}
}
}
},
}
},
//}
//}
},
问题是在搜索查询中何时启用过滤器,例如值为“ Ryzen 7”的“ procesor”-作为响应,除“ Ryzen 7”以外,所有“处理器”值都不会汇总。 / p>
我尝试使用global type
进行此操作,但是在这种情况下aggs停止使用搜索查询并返回所有现有的值计数。
任何帮助将不胜感激,谢谢!