Есть каталог, строится который через связку MySql + Elasticsearch (MySql как основное хранилище, Elasticsearch - как система фильтрации товаров которые надо показать в категориях).
Дополнительно:
- Карточка товара - может отображаться в разных категориях
- Карточка товара - может иметь несколько тэгов
- Товаров ~50к
- Категорий ~3000
В эластике сейчас это имеет примерно такую структуру:
$params = [
'index' => 'products_cards',
'body' => [
'mappings' => [
'properties' => [
'price' => [
'type' => 'float'
],
'id_brand' => [
'type' => 'integer'
],
'categories' => [
'type' => 'integer'
],
'tags' => [
'type' => 'integer'
],
'prop' => [
'type' => 'object',
'properties' => [
'weight' => [
'type' => 'integer',
],
'material' => [
'type' => 'keyword',
],
]
],
],
]
]
];
Всё замечательно с выборками товаров по необходимым категориям, тэгам и параметрам. Но появилась необходимость, сделать в каждой категории свою сортировку.
Т.к. с Elasticsearch первый опыт (да и вообще опыта с NoSql крайне мало), с ходу в голову не приходит никакого адекватного решения.