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. Pokročilé fulltextové vyhledávání

Na konci tohoto seriálu byste měli být schopni implementovat fulltextové vyhledávání v českém jazyce s pomocí Elasticsearch. 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ými lze vyhledávání vytvořit přesně na míru danému účelu. Elasticsearch 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. Zároveň však disponuje základním nastavením pro řadu jazyků, s kterým vyhledávání obstojně funguje bez složitého nastavování.

Dalším důvodem pro jeho použití je rychlost, s kterou je možné vyhledávát. Omezením není ani rostoucí množství dat, Elasticsearch je možné jednoduše vertikálně škálovat, stačí přidat další servery do clusteru a Elasticsearch se o zbytek postará sám. 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.

FUlltextovým vyhledáváním však funkce Elasticsearch nekončí. Lze jej využít pro výpočty nad nalezenými daty, která mohou být například použita pro vytvoření filtrů na webu. Dalším možným použitím je vytvoření nástroje pro ukládání logů ze všech možných zdrojů a následné vytváření vizualizací a dashboardů pomocí nástroje Kibana.

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