У меня есть товары с динамическими атрибутами (фильтры).Мне нужно получить динамическое число для каждого значения для фильтра в соответствии с поисковым запросом.
У меня есть следующее отображение для индекса товаров:
{
"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
}
}
}
},
}
},
//}
//}
},
Проблема в том, что в поисковом запросе будет включен фильтр, например, «proccesor» со значением «Ryzen 7» - в ответ не будет произведено агрегирование для всех «процессорных» значений, кроме «Ryzen 7».
Я пытался заставить эту работу работать с global type
, но в этом случае aggs перестает работать с поисковым запросом и возвращает все существующие значения для значений.
Любая помощь будет высоко оценена., спасибо!