Полнотекстовый поиск - это отдельная история, по которой можно написать отдельную статью. Здесь это сознательно оставлено за рамками, и в момент реализации описанного функционала такая задача еще даже не стояла. Сейчас пользуемся для этого сторонним сервисом (хотя лично я конечно от такого решения не в восторге :)) Если запилим свой - напишем
Фильтры для пользователя - тоже отдельная история. Они у нас есть, и пока они работают как и раньше на скуле покрытые кешем с прогревом для топа регионов, и их мы на эластик еще даже не перенесли. Поэтому я описал фильтры только со стороны того, как они используются при формировании подборок.
По размеру каталога ответил выше. Что касается иерархических данных: в определенном смысле иерархия есть - варианты являются подмножеством продуктов. И сложности, связанные с этим, в статье я тоже привел. Да, они есть, но работать с этим вполне можно.
Согласен, цифр не хватает. Исправиляюсь :) Параметры каталога:
Около 20К товаров
Около 200К вариантов
Около 700 подборок. Многие из них имеют довольно большое количество фильтров, самое большое - на данный момент аж 194
Атрибутов порядка 150
Значений атрибутов порядка 50 тысяч
Конечно это довольно скромные цифры, все-таки мы не Мвидео, а магазин одежды )
Бек написан на PHP/Laravel, Эластик на одном инстансе (размещение облачное), на данный момент 12 ядер и 12 гигов памяти, но это с запасом: сейчас низкий сезон, и нагрузка даже в пиках не превышает 30%. Rps чисто на каталог товаров - около 150. Горизонтально не скалировали. На Opensearch пока тоже не переходили.
Полнотекстовый поиск - это отдельная история, по которой можно написать отдельную статью. Здесь это сознательно оставлено за рамками, и в момент реализации описанного функционала такая задача еще даже не стояла. Сейчас пользуемся для этого сторонним сервисом (хотя лично я конечно от такого решения не в восторге :)) Если запилим свой - напишем
Фильтры для пользователя - тоже отдельная история. Они у нас есть, и пока они работают как и раньше на скуле покрытые кешем с прогревом для топа регионов, и их мы на эластик еще даже не перенесли. Поэтому я описал фильтры только со стороны того, как они используются при формировании подборок.
Спасибо за статью!
По размеру каталога ответил выше. Что касается иерархических данных: в определенном смысле иерархия есть - варианты являются подмножеством продуктов. И сложности, связанные с этим, в статье я тоже привел. Да, они есть, но работать с этим вполне можно.
Согласен, цифр не хватает. Исправиляюсь :) Параметры каталога:
Около 20К товаров
Около 200К вариантов
Около 700 подборок. Многие из них имеют довольно большое количество фильтров, самое большое - на данный момент аж 194
Атрибутов порядка 150
Значений атрибутов порядка 50 тысяч
Конечно это довольно скромные цифры, все-таки мы не Мвидео, а магазин одежды )
Бек написан на PHP/Laravel, Эластик на одном инстансе (размещение облачное), на данный момент 12 ядер и 12 гигов памяти, но это с запасом: сейчас низкий сезон, и нагрузка даже в пиках не превышает 30%.
Rps чисто на каталог товаров - около 150.
Горизонтально не скалировали. На Opensearch пока тоже не переходили.