Для описанной выше реализации можно использовать два подхода.
1) Базовый подход c. Мы можем создать поисковую коллекцию, которая будет иметь следующее поле, например
Search
_id, name, description, type (brand, products, etc), type_id (brand_id, product_id), logo (It can be a brand logo, or product logo and etc).
Для каждого продукта, бренда и т. Д. c добавляем, мы будем создавать запись в таблице поиска. Точно так же при удалении мы удалим этот продукт или бренд из таблицы поиска
У нас будет конец с именем http: /// search /: string, который в ответ даст результат как
{
data: [
{
_id: 507f1f77bcf86cd799439011,
name: 'Clothing',
description: "Sample description about clothing",
type: 'brand',
type_id: 675f1f77bcf86cd799439124, // brand id reference,
logo: "http://<domain_name>/logo/675f1f77bcf86cd799439124"
},
{
_id: 5d3f1f77bcf86cd799439234,
name: 'Monitor',
description: "Sample description about Monitor",
type: 'product',
type_id: 5j5f1f77bcf86cd799439987, // product id reference
logo: "http://<domain_name>/logo/5j5f1f77bcf86cd799439987"
}, {
_id: 507f1f77bcf86cd799439333,
name: "Mobile",
description: "Sample description about Mobile",
type: 'brand',
type_id: 876f1f77bcf86cd799439444, // brand id reference
logo: "http://<domain_name>/logo/876f1f77bcf86cd799439444"
}
]}
2) Сложный подход: вместо использования таблицы поиска вы можете go с помощью elasti c искать более быстрый и надежный подход