Налаштування 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 тижні. Вартість розраховується індивідуально після оцінки обсягу даних та складності.

Готові взятися за ваш проєкт. Зв'яжіться з нами — ми підготуємо архітектурне рішення та точну оцінку. Отримайте консультацію, залишивши заявку.