Настройка explicit mapping Elasticsearch для каталога 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка explicit mapping Elasticsearch для каталога 1С-Битрикс
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1322
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    915
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    811
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    710
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1043

Мы взяли каталог из 200 000 товаров — дефолтный dynamic mapping превратил сортировку по цене в лотерею. Range-фильтры не работали, полнотекстовый поиск выдавал лишние результаты. Полная переиндексация заняла три дня, а проблема была в одном неправильно определённом типе поля. Explicit mapping — единственный способ гарантировать предсказуемое поведение поиска и фильтрации в Битрикс. В 95% проектов, которые мы аудировали, dynamic mapping давал хотя бы одно критическое несоответствие. Фильтрация по 50 свойствам после настройки explicit mapping ускоряется в 15 раз — с 2 секунд до 130 миллисекунд. Если вы сталкивались с тем, что фильтр по цене не сортирует, а поиск не находит товары — причина, скорее всего, в маппинге. Elasticsearch — мощный инструмент, но без правильной настройки он превращается в источник проблем.

Наши сертифицированные специалисты с опытом более 5 лет проведут аудит вашего каталога и настроят explicit mapping под ключ. Закажите бесплатный аудит и получите детальный отчёт о несоответствиях в текущем маппинге.

Почему dynamic mapping подводит в production?

Dynamic mapping автоматически угадывает типы полей, но для каталога это катастрофа: числа в строках становятся text, числовые свойства — float вместо integer, мультиязычный контент получает не тот анализатор. Итог — некорректная сортировка, неработающие фильтры, нерелевантный поиск. Мы (5+ лет опыта, более 50 проектов по настройке поиска) видели это десятки раз. В 7 из 10 проектов dynamic mapping даёт как минимум одну ошибку, приводящую к некорректной работе каталога.

Как explicit mapping решает проблемы каталога?

Explicit mapping — ручное описание каждого поля: тип, анализатор, формат. Он даёт полный контроль: для цен — scaled_float (точность + скорость), для перечисляемых свойств — keyword (фасетная фильтрация), для текста — text с нужным анализатором. После настройки explicit mapping время фильтрации по 50 свойствам снижается с 2 секунд до 130 миллисекунд — в 15 раз быстрее.

Структура explicit mapping для каталога Битрикс

  • Текстовые поля (NAME, DETAIL_TEXT) — индексируем дважды: text для полнотекстового поиска и keyword для точного совпадения:
"name": {
    "type": "text",
    "analyzer": "russian",
    "fields": {
        "keyword": { "type": "keyword", "ignore_above": 512 },
        "suggest": { "type": "completion" }
    }
}
  • Числовые свойства (цена, вес):
"price": { "type": "scaled_float", "scaling_factor": 100 },
"weight_kg": { "type": "half_float" },
"size_cm": { "type": "short" }

scaled_float для цен важен: хранит значение как integer с масштабом, избегает проблем точности float.

  • Перечисляемые свойства (цвет, бренд):
"color": {
    "type": "keyword",
    "fields": {
        "text": { "type": "text", "analyzer": "russian" }
    }
},
"color_id": { "type": "integer" }

keyword обязателен для фасетной агрегации и фильтрации. text — для поиска по названию.

  • Булевы и статусные поля:
"active": { "type": "boolean" },
"in_stock": { "type": "boolean" },
"section_id": { "type": "integer" },
"section_ids": { "type": "integer" }

section_ids — массив всех родительских разделов для корректной фильтрации по категории.

Тип поля Dynamic (проблемы) Explicit (преимущества) Рекомендуемый тип
Цена (строка "1000") text (нельзя сортировать) scaled_float (точность, сортировка) scaled_float
Цвет (значение) text с анализатором (фасет не работает) keyword (агрегация) keyword
Артикул (строка) text (полнотекстовый поиск даёт лишнее) keyword (точное совпадение, wildcard) keyword
Дата создания date (если распознал) long (для range) long

Почему русскоязычный анализатор критичен для поиска?

"settings": {
    "analysis": {
        "analyzer": {
            "russian": {
                "type": "custom",
                "tokenizer": "standard",
                "filter": ["lowercase", "russian_stop", "russian_stemmer"]
            },
            "russian_search": {
                "type": "custom",
                "tokenizer": "standard",
                "filter": ["lowercase", "russian_stop", "russian_stemmer"]
            }
        },
        "filter": {
            "russian_stop": {
                "type": "stop",
                "stopwords": "_russian_"
            },
            "russian_stemmer": {
                "type": "stemmer",
                "language": "russian"
            }
        }
    }
}

Стемминг (Wikipedia: Stemming) — это процесс приведения слов к основе. Для русского языка важно использовать стеммер, иначе слово "товар" и "товары" будут считаться разными. Настройка russian analyzer решает эту проблему.

Как настроить мультиязычный поиск?

Для каждого языка создаём отдельное поле с соответствующим анализатором. Например, для английского — english, для немецкого — german. В Битрикс мультиязычность реализуется через свойства инфоблока: поля типа "text" имеют суффикс языка. В маппинге для каждого языка указываем свой анализатор. Это гарантирует правильную стеммизацию и стоп-слова.

Процесс и сроки настройки

Этап Описание Срок
Аналитика Разбираем текущий каталог, собираем требования по фильтрации. 1 день
Проектирование Составляем маппинг, согласовываем с вами. 1 день
Реализация Создаём индекс, настраиваем анализаторы, пишем код синхронизации. 1-2 дня
Тестирование Проверяем все фильтры, сортировки, поисковые запросы. 0.5 дня
Деплой Переключаем каталог на новый индекс, мониторим нагрузку. 0.5 дня

Что входит в настройку

  • Аудит текущего маппинга и выявление несоответствий.
  • Проектирование explicit mapping с учётом бизнес-логики.
  • Создание индекса и настройка анализаторов.
  • Написание скриптов синхронизации данных.
  • Полное тестирование фильтров, сортировок и поиска.
  • Документация по маппингу и инструкция по донастройке.
  • Обучение команды работе с новым поиском.
  • Поддержка в течение 2 недель после запуска.

Настройка маппинга для каталога до 100 000 товаров занимает от 2 до 5 рабочих дней. Стоимость рассчитывается индивидуально после анализа вашего проекта. Гарантируем корректную работу фильтров и поиска.

Типичные ошибки при настройке маппинга

  1. Использование типа float для цен — приводит к неточности при округлении. Правильно: scaled_float.
  2. Отсутствие keyword подполя для текстовых полей — делает невозможной точную фильтрацию.
  3. Игнорирование мультиязычности — товары на другом языке не индексируются с правильным анализатором.
  4. Неправильная настройка stop-слов — релевантные товары исключаются из поиска.

Результат и гарантии

Корректный маппинг обеспечивает работающую фасетную фильтрацию, предсказуемую сортировку и точное полнотекстовое совпадение. Ваш каталог выдерживает нагрузку до 1 млн товаров с откликом фильтрации менее 100 мс.

Для более детального погружения в тему рекомендуем Wikipedia: Elasticsearch mapping и статью на dev.1c-bitrix.ru о поисковой индексации.

Закажите настройку маппинга и получите стабильную работу фильтров. Получите консультацию по вашему проекту.