Задать вопрос
serejatoje
@serejatoje

Как сделать простой фильтр с фасетом?

Всем привет! Подскажите, как сделать фильтр (фасет) на эластике, наподобие как это сейчас в умном фильтре битрикс? Например есть цвет: красный и желтый, и есть размеры S, M, L, XL. При выборе КРАСНЫЙ желтый не исчезает, а фильтруются размеры. Или если выбрали только размер XL, остальные размеры не прячутся (ведь могут быть разные размеры), а вот цвет фильтруется в агрегации. В моих попытках если жмем цвет красный - в агрегации он только один остается. Может кто подскажет где в доках эластика это есть или может быть пример?
  • Вопрос задан
  • 48 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
no_one_safe
@no_one_safe
Можно делать 2 запроса в эластик - базовая агрегация без фильтра (все возможные значения) и второй запрос с примененным фильтром.
1. Получили 2 набора свойств - полный набор и ограниченный по фильтру.
2. Отрисовали фильтр на фронте согласно полному набору свойств.
3. Для свойств, которые не выбраны в фильтре (и только для них) "задизейблили" те значения, для которых агрегация с фильтром выдала 0 штук.

Таким образом у вас и фильтр "не скачет" - т.е пользователь явно видит, что такое значение в принципе есть, но не подходит по фильтру. При этом можно выбрать в текущем выбранном свойстве другие значения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы