Przejdź do treści
Architektura 7 min czytania

Search w sklepie B2B - Algolia, Elasticsearch, OpenSearch, Meilisearch

Klient B2B na PLP filtruje po 6 atrybutach (kategoria, producent, kolor, średnica, dostępność, grupa cenowa) i oczekuje wyników w pół sekundy. MySQL z domyślną konfiguracją Magento przy 30k SKU daje to w 4-8 sekund. Wtedy klient zaczyna mówić „wolny sklep". Tu wchodzi search dedykowany - Algolia, Elasticsearch, OpenSearch, Meilisearch. Wybór nie jest oczywisty, koszt zaskakuje, ROI jest mierzalny.

Jakub Owsianka Autor
Zaktualizowano:
Okladka artykulu: Search w sklepie B2B - Algolia, Elasticsearch, OpenSearch, Meilisearch (kategoria: Architektura)
Okladka artykulu: Search w sklepie B2B - Algolia, Elasticsearch, OpenSearch, Meilisearch (kategoria: Architektura)
Spis treści (8)

W skrócie

  • 1. Próg migracji z MySQL: ~5-10k SKU + filtrowanie po 3+ atrybutach
  • 2. Elasticsearch / OpenSearch: open-source, samodzielne utrzymanie, najlepsze dla średnich sklepów
  • 3. Algolia: SaaS, najlepsze UX, droższe (per query + per record)
  • 4. Meilisearch / Typesense: młodsze, lżejsze, mniejszy ekosystem
  • 5. Magento 2.4+: wymaga Elasticsearch / OpenSearch z urzędu
  • 6. Shopware: opcjonalne, ale dla skali B2B - wymagane

Co konkretnie robi search dedykowany

MySQL z full-text search działa do pewnej skali. Powyżej - sypie się na:

1. Filtrowanie po wielu atrybutach.

Klient zaznacza 6 filtrów. MySQL musi zrobić JOIN-y między tabelami product, product_attribute_value, category_product × każdy atrybut. Query plan eksploduje, czas rośnie liniowo z liczbą filtrów.

Search engine trzyma wszystko zindeksowane w jednym dokumencie. Filtr po 6 atrybutach = jeden lookup w indeksie. 50-200ms zamiast 4-8 s.

2. Full-text search z relevance.

MySQL: LIKE '%fraza%' lub MATCH AGAINST. Bez fuzzy matching, bez relevance scoring.

Search engine: tokenizacja, stemming (kupić = kupowanie = kupić), fuzzy matching (literówki), synonimy, custom ranking.

3. Faceted search (filtry z licznikiem).

„Producent: Bosch (123), Makita (87), Stanley (45)..." - licznik produktów na filter.

W MySQL: osobne query per filter. 20 filtrów × COUNT(*) = bardzo wolno.

W search engine: aggregation w jednym query. Szybko.

4. Typeahead / autocomplete.

„Bosch wkr..." → sugestie. MySQL - trudne / wolne. Search engine - natywne.

Elasticsearch / OpenSearch - domyślny wybór

Elasticsearch to dojrzały silnik open-source (od 2010). Od 2021 licencja zmieniona przez Elastic na komercyjną dla niektórych use-case'ów. AWS w odpowiedzi wystartował fork OpenSearch (Apache 2.0).

Z praktycznego punktu widzenia OpenSearch ≈ Elasticsearch 7.10 + AWS rozwój. Większość projektów polskich B2B w 2026 idzie na OpenSearch (managed na AWS) lub Elasticsearch self-hosted.

Mocne strony:

  • Dojrzały, dobrze udokumentowany
  • Magento 2.4 / Adobe Commerce wymaga go z urzędu
  • Bardzo elastyczny (custom mappings, custom analyzers, scripted scoring)
  • Skala - można obsłużyć miliony dokumentów
  • Wbudowane aggregations

Słabe strony:

  • Wymagający w hostingu (RAM-żerny - JVM)
  • Krzywa uczenia - query DSL elastic to inny język
  • Self-hosted = administracja, monitoring, klastrowanie

Hosting:

  • Self-hosted: 3-7 nodes (HA cluster), 16-32 GB RAM na node, ~3-10 tys. zł / mies.
  • Managed: Elastic Cloud, AWS OpenSearch Service, od ~$200/mies. do dużych kwot
  • Hetzner / OVH bare-metal z własną konfiguracją Elastic - najtaniej

Wdrożenie dla średniego sklepu B2B: 60-120 tys. zł (indeksowanie, mappings, query optimization, integracja z platformą).

Algolia - SaaS premium

Algolia to amerykański SaaS, najbardziej dopracowane UX wśród searchów. Aspekty:

Mocne strony:

  • Out-of-the-box typeahead, instant search, faceted search
  • Najlepsza widoczna jakość wyszukiwania (relevance, fuzzy)
  • Bardzo szybkie (zazwyczaj poniżej 50ms global)
  • Personalizacja, A/B testing, analytics w cenie
  • Brak administracji (managed)
  • Gotowe integracje dla Magento, Shopware, Salesforce

Słabe strony:

  • Drogie. Cennik per record (każdy zindeksowany dokument) + per query (każde wyszukiwanie).
  • Realne kwoty dla średniego sklepu B2B z 30k SKU: 400-1500 USD / mies., dla większych - kilka tys. USD / mies.
  • Vendor lock-in
  • Brak kontroli nad infrastrukturą

Kiedy Algolia ma sens:

  • Sklepy gdzie UX search to wyróżnik (B2C luksusowe, fashion, lifestyle)
  • Mniejsze sklepy do ~20k SKU bez własnego zespołu utrzymującego Elastic
  • Projekty gdzie speed-to-market jest kluczowe

Kiedy Algolia nie ma sensu:

  • Duże katalogi (>50k SKU) - koszt eksponuje
  • B2B gdzie search jest narzędziem, nie wyróżnikiem
  • Wymóg custom logic (scripted scoring, special filtering)

Meilisearch / Typesense - młodsze open-source

Meilisearch (od 2018, Rust) i Typesense (od 2017, C++) to lżejsze alternatywy dla Elasticsearch. Cele: szybsze, prostsze, mniej zasobożerne.

Mocne strony:

  • Mniej wymagający w hostingu (jeden binarny plik, mniej RAM-u)
  • Szybkie konfiguracje (mniej boilerplate'u niż Elastic)
  • Dobre UX dla podstawowych use-case'ów
  • Rosnące ekosystemy

Słabe strony:

  • Mniejszy ekosystem (mniej integracji gotowych)
  • Mniejsza społeczność
  • Mniej funkcji enterprise (np. cross-cluster replication)
  • Mniej deweloperów na rynku

Z mojej praktyki: zrobiłem PoC z Meilisearch dla klienta zamiast Elastic (chcieli prostszy hosting). Wszystko działało technicznie. Ale: brak gotowej integracji z Magento (zrobiłem custom), mniej narzędzi monitoringu, klient zaniepokojony „świeżością". Po 2 miesiącach przeszli na OpenSearch. To nie krytyka Meilisearch, to historia. Dla projektów greenfield bez wymogów ekosystemu - Meilisearch potrafi być świetne.

Magento 2.4+: Elasticsearch lub OpenSearch jako wymóg. Sklep się nie uruchomi bez. Magento Open Source ma wbudowany Elastic search adapter, Adobe Commerce dodaje Live Search (managed Elastic od Adobe - droższy, więcej funkcji).

Shopware 6: Storefront search domyślnie wewnątrz platformy (MySQL-based), Elasticsearch jako enhancement od pewnej skali. Konfigurowalne.

Hyvä Theme: uplift na klasyczne Magento, nie zmienia search backend.

Algolia dla Magento: oficjalny moduł od Algolia, dobrze utrzymywany, jeden z popularniejszych modułów w polskim B2B.

Algolia dla Shopware: oficjalny plugin, mniej dojrzały niż dla Magento.

Indeksacja - co i jak

Co indeksować:

  • Nazwa produktu, opis, SKU, EAN
  • Atrybuty filtrowalne (kolor, rozmiar, producent, kategoria)
  • Atrybuty wyświetlane (cena bazowa, dostępność)
  • Synonimy (śruba M8 = wkręt M8)
  • Custom fields (np. tagi sezonowe)

Czego nie indeksować:

  • Atrybuty zmieniające się często (stan, cena dynamiczna kontraktowa) - to czytasz on-demand
  • Dane wrażliwe (atrybuty per kontrahent)
  • Tłumaczenia jeśli nie chcesz multi-language search

Częstotliwość reindeksowania:

  • Full reindex: raz na dobę (nocą)
  • Delta: co 5-15 min (produkt zmieniony → reindex jego dokumentu)
  • Event-driven: webhook z PIM/ERP → reindex konkretnego SKU

Czas indeksacji 50k SKU:

  • Elasticsearch: ~10-30 min (zależnie od mappings i hardware)
  • Algolia: ~5-15 min (managed, automatyczne)
  • Meilisearch: ~5-20 min

Custom ranking dla B2B

Klient B2B ma inne potrzeby niż B2C. Custom ranking factor:

1. Dostępność w preferowanym magazynie kontrahenta.

Klient z Wrocławia widzi pierwsze produkty z magazynu Wrocław. Reszta na końcu.

2. Historia zakupów.

Klient kupował 50× konkretny produkt - pokazuj go wyżej.

3. Cena kontraktowa promowana.

Produkty z najlepszą marżą dla kontrahenta wyżej (a nie tylko wg ceny absolutnej).

4. Promocje i nowości.

Aktywne promocje boostowane w rankingu.

5. Stan magazynowy.

Produkty z 1000 szt. wyżej niż „ostatnia sztuka" (chyba że klient sortuje po dostępności).

Implementacja:

  • Elasticsearch: Painless scripting + function_score query. Pełna kontrola, własna logika.
  • Algolia: custom ranking rules w panelu + InstantSearch.js, mniej kodu.
  • Meilisearch / Typesense: ograniczone, ale podstawowe rankingi są.

Koszt i ROI

Wdrożenie pierwszego sklepu z Elasticsearch / OpenSearch:

  • 60-120 tys. zł (mappings, integracja z platformą, custom ranking, monitoring)

Hosting Elastic (3-node cluster):

  • Self-hosted Hetzner: 3-7 tys. zł / mies.
  • AWS OpenSearch Service: $400-1500 / mies.
  • Elastic Cloud: $300-1500 / mies.

Algolia:

  • Free tier: do 10k records, do 100k queries/mies. - dla bardzo małych
  • Średnie B2B: $400-1500 / mies.
  • Duże: $2000-10000+ / mies.

ROI:

Poprawa LCP na PLP z 5s do 1.5s = wymierna poprawa conversion rate (zazwyczaj 5-15%). Dla sklepu z 30 M zł obrotu = 1.5-4.5 M zł dodatkowej sprzedaży rocznie. ROI w 6-12 miesięcy.

FAQ

Czy MySQL z dobrze ustawionymi indeksami wystarczy? Do ~5k SKU + 2-3 filtry - tak. Powyżej - search dedykowany. Nie ma „obejścia".

Czy mogę używać Elastic do innych celów niż search? Tak, popularne use-case: logi (Elastic Stack - ELK), monitoring, analytics. Często ten sam klaster.

Magento 2 wymaga Elasticsearch - czy mogę OpenSearch? Tak, od Magento 2.4.4 OpenSearch jest oficjalnie wspierany. Coraz częstszy wybór (licensing).

Algolia czy Elasticsearch dla nowego sklepu? Jeśli budżet < 1 mln zł i zespół ma kompetencje DevOps - Elastic/OpenSearch. Jeśli budżet pozwala, prosty sklep do 20k SKU, mały zespół - Algolia.

Czy mogę robić personalizację search (history-based) bez ML? Tak, na poziomie boostingu produktów oglądanych / kupowanych przez klienta. Bez ML, na regułach. Elasticsearch function_score sobie z tym poradzi.

Co dalej

O autorze

Jakub Owsianka

Architekt rozwiązania w WiseB2B - silniku platform B2B. Zaczynał po stronie biznesu (własne sklepy), potem deweloper, dziś projektuje wdrożenia dla sklepów z katalogami w dziesiątkach tysięcy SKU. W ostatnich latach wdrożył AI-development w zespole i funkcjonalności oparte o AI bezpośrednio w silniku sklepu.

Masz pytanie do tego artykułu?

Dodatkowy kontekst, problem z własnym wdrożeniem, druga opinia - napisz wprost. Odpowiadam osobiście w 1-2 dni robocze.