Я ищу, чтобы получить вложенные сегменты корзины для FacetedSearch каталога продуктов. Каждый продукт имеет атрибуты (например, цвет: красный), и я хочу, чтобы результаты агрегации возвращали эквивалент:
{color: {
red: 5,
blue: 2
...
}
}
Отображение для соответствующего поля выглядит следующим образом (с именем атрибута в имени ключ и значение в ключе value ).
"filter_product_attributes": {
"type": "nested",
"properties": {
"name": {
"type": "keyword"
},
"value": {
"type": "keyword"
}
}
},
Я могу получить искомый результат, переопределив метод поиска следующим образом:
def search(self):
s = super().search()
s.aggs.bucket('filter_product_attributes', 'nested', path='filter_product_attributes') \
.bucket('att_names', 'terms', field='filter_product_attributes.name') \
.bucket('att_values', 'terms', field='filter_product_attributes.value')
return s
Мне было интересно, есть ли способ сделать это непосредственно в настройках facets , когда я вызываю свой подкласс FacetedSearch? Заранее спасибо за любое руководство!