Настройка Elasticsearch для поиска в мобильном приложении

Настройка Elasticsearch для поиска в мобильном приложении Представьте интернет-магазин с 10 000 товаров. Пользователь вводит «кроссовки Adidas» — приложение подвисает на 5 секунд, а затем показывает пустой список из-за медленного `LIKE`-запроса. Конверсия падает. Мы сталкиваемся с этим на каждом

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Настройка Elasticsearch для поиска в мобильном приложении
Средний
~2-3 дня

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

Часто задаваемые вопросы

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    898
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1219
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    600

Настройка Elasticsearch для поиска в мобильном приложении

Представьте интернет-магазин с 10 000 товаров. Пользователь вводит «кроссовки Adidas» — приложение подвисает на 5 секунд, а затем показывает пустой список из-за медленного LIKE-запроса. Конверсия падает. Мы сталкиваемся с этим на каждом втором проекте. Наша команда с 5-летним опытом работы с Elasticsearch и более 30 реализованных проектов настраивает поиск под ключ: от индексации данных до готового UI с автодополнением и фасетами. Гарантируем, что время ответа не превышает 200 мс даже при миллионе документов.

Почему Elasticsearch, а не LIKE-поиск?

LIKE в SQLite (или аналогичных базах) не умеет ранжировать результаты, не поддерживает морфологию и тормозит на объёмах свыше тысячи записей. Elasticsearch обеспечивает полнотекстовый поиск, автодополнение, фасетные фильтры и релевантность по десяткам факторов. Разница в скорости — до 50 раз быстрее для сложных запросов, что критически важно для конверсии в e-commerce. Например, поиск «кроссовки» найдёт и «кроссовок», и «кроссовками» за миллисекунды.

Архитектура: мобильное приложение не обращается к ES напрямую

Мобильный клиент отправляет запрос на backend: GET /api/search?q=кроссовки&category=sport. Backend (Laravel/Node) выполняет поиск в Elasticsearch и возвращает пагинированный ответ. Причины:

  • Безопасность: структура индекса и учётные данные недоступны клиенту.
  • Кэширование: сервер кэширует популярные запросы, сокращая нагрузку на ES.
  • Контроль нагрузки: тысяча одновременных клиентов не перегружает кластер.
Критерий LIKE Elasticsearch
Время запроса (1 млн строк) > 5 с < 200 мс
Морфология нет полноценная
Ранжирование нет по релевантности

Настройка индекса

Для русского текста обязателен морфологический анализатор. Используем встроенный russian или плагин analysis-morphology. Без него запрос «кроссовки» не найдёт «кроссовок» или «кроссовка». Пример маппинга:

{ "mappings": { "properties": { "name": { "type": "text", "analyzer": "russian", "fields": { "keyword": { "type": "keyword" } } } } } } 

Поле keyword необходимо для сортировки и агрегаций — text для этого непригодно.

Анализатор Морфология Производительность Лицензия
russian + высокая встроен
analysis-morphology ++ средняя плагин

Elasticsearch — стандарт индустрии, для русскоязычного контента предпочтителен russian.

Как реализовать автодополнение и пагинацию?

Автодополнение (search-as-you-type) реализуется через поле типа search_as_you_type или completion suggester. Клиент отправляет запрос при каждом вводе с debounce 300 мс, сервер возвращает до 7 подсказок. Для пагинации используем search_after вместо стандартного from/size, которое ограничено 10 000 результатов. Это позволяет реализовать бесконечный скролл без необходимости кнопки «следующая страница».

Как мы настраиваем поиск для клиентов?

Наш процесс включает пять этапов:

  1. Анализ данных: изучаем структуру товаров, определяем поля для индексации, нормализуем атрибуты.
  2. Проектирование индекса: выбираем анализаторы, настраиваем маппинг и автообновление через logstash или Kafka.
  3. Реализация API: создаём endpoint с пагинацией (search_after), фасетами и автодополнением. Документируем в Swagger.
  4. Интеграция в мобильное приложение: подключаем API, рисуем UI (skeleton, debounce, бесконечный скролл). Нативные SDK (Alamofire, Retrofit) обрабатывают запросы.
  5. Тестирование и мониторинг: проверяем скорость (<500 мс), включаем slowlog, настраиваем алерты в Kibana.

Разберём типовой кейс. Клиент — маркетплейс с 50 000 товаров. Elasticsearch кластер из 3 нод, индексация через Kafka. После интеграции среднее время ответа упало с 3 с до 150 мс, количество брошенных корзин снизилось на 30%. Для этого пришлось настроить анализатор russian с кастомным словарём стоп-слов и добавить boosting по рейтингу товара.

Что входит в работу?

  • Документация по архитектуре поиска и схемам запросов.
  • Доступы к серверу Elasticsearch и настроенный мониторинг (Kibana, Grafana).
  • Исходный код backend-контроллера с примерами запросов (REST, GraphQL).
  • Обучение команды: как обновлять индекс, добавлять поля, менять релевантность.
  • Поддержка в течение месяца после запуска.

Мониторинг и производительность

Медленные запросы (>500 мс) логируем через slowlog Elasticsearch. В мобильном приложении показываем skeleton-заглушки, при задержке >3 с — сообщение «Поиск занимает больше времени». Базовые метрики: среднее время ответа <200 мс, процент ошибок <0.5%.

Сроки и стоимость

Базовая интеграция (индекс + API + UI поиска) занимает 1–2 недели. Полный набор (фасеты, автодополнение, офлайн-кэш) — 3–4 недели. Стоимость рассчитывается индивидуально после оценки объёма данных и сложности.

Готовы взяться за ваш проект. Свяжитесь с нами — мы подготовим архитектурное решение и точную оценку. Получите консультацию, оставив заявку.