Войти Регистрация
Data base

141. Почему фильтр по бренду пустой

Лёгкая

Elasticsearch · Elasticsearch 8.19.12

В индексе products поле brand размечено как text с подполем brand.raw типа keyword — так делают, чтобы бренд искался по словам и одновременно годился для фасета.

Фронтенд фасета «Бренд» шлёт {"term": {"brand": "New Balance"}} и получает пустую выдачу, хотя кроссовки New Balance в каталоге есть.

Нужен запрос, который вернёт все товары ровно бренда «New Balance» (без «New Era» и «Balance Pro»), по возрастанию price_rub.

В работе: Фасетный фильтр в каталоге маркетплейса: клик по бренду в левой колонке.

Как проверяем Движка Elasticsearch в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
text и keywordtermmulti-fields

Источник: доклад команды поиска OZON «Синонимы и анализаторы: наш кейс использования», Elasticsearch Moscow meetup, 2019. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.

Какой запрос вернёт товары бренда «New Balance» по возрастанию цены?

  • term по brand
  • term по brand.raw
  • match по brand
  • term по brand.raw в нижнем регистре