Seriál Elasticsearch: Úvod

V tomto seriálu se budu snažit vysvětlit problematiku fulltextového vyhledávání a postupně jej implementovat pomocí nástroje Elasticsearch. Fulltextové vyhledávání je poměrně komplexní problematika, budu se ji tedy snažit rozdělit na několik samostatných částí a ty postupně projít.

Nebudu se zaměřovat na implementaci vyhledávacího nástroje pomocí konkrétního programovacího jazyka - knihovny pracující s Elasticsearch jsou obdobné napříč různými jazyky, a vesměs kopírují API, kterým disponuje Elasticsearch. Budu se snažit uvést i související teoretické znalosti - věřím, že hlubší znalost dané problematiky je užitečná k nalezení optimálního řešení problému.

V následujících dílech tohoto seriálu postupně projdu:

  1. Základní pojmy
  2. Instalace Elasticsearch
  3. Ukládání a zobrazení dat
  4. Fulltextové vyhledávání v češtině
  5. Překlepy
  6. Našeptávání
  7. Řazení výsledků
  8. Filtrování výsledků
  9. Agregace
  10. Logování
  11. Provoz v produkčním prostředí
  12. Notifikace
  13. Zabezpečení

Na konci tohoto seriálu byste měli být schopni implementovat fulltextové vyhledávání v českém jazyce s pomocí Elasticsearch na svůj web. Veškeré zdrojové kódy jsou dostupné na GitHubu.

Trocha motivace úvodem

A jaké jsou hlavní důvody, proč použít pro vyhledávání právě Elasticsearch? Především má velké množství funkcí, které implementaci vyhledávání umožňují. Je tak možné vytvořit službu, která vznikla na míru danému použití. Disponuje podporou češtiny a dalších jazyků, poradí si se skloňováním, časováním, synonymy nebo našeptáváním.

Dalším důvodem pro jeho použití je rychlost, s kterou je možné vyhledávát. Ta se navíc výrazně nemění s rostoucím množstvím dat, která jsou zpracována - Elasticsearch je možné vertikálně škálovat a tak je omezením až množství serverů, které má k dispozici. Škálování je navíc opravdu snadné, stačí přidat další server do clusteru a Elasticsearch se sám postará o vhodnou distribuci dat. S tím souvisí také to, že data mohou být automaticky replikována mezi servery, při výpadku některého z nich tak nedochází k výpadku celé služby ani ztrátě dat.

Pokud jste připraveni vrhnout se do tajů fulltextového vyhledávání a Elasticsearch poznat důkladněji, pokračujte prosím následující kapitolou.

Luděk Veselý

PHP Developer