Elasticsearch je fulltextový vyhledávač, který vychází z Apache Lucene. Dispoduje rozhraním RESTful a dokáže nabídnout vysokou dostupnost, rychlost i škálovatelnost. Je vyvíjen v Javě a lze s ním komunikovat za použití webového rozhraní. Šíří se zdarma za využití licence Apache.
Typické vlastnosti
Data jsou dostupná v reálném čase. Jedním z hlavních rysů Elasticsearch je rychlost. Díky ní je například možné využívat filtry na webových stránkách a výsledky vyhledávání se zobrazí téměř okamžitě.
Systém je distribuovaný. Elasticsearch je možné jednoduše škálovat na základě toho, jak se zvyšuje zatížení serveru, na kterém je spuštěn. Pokud je výkon serveru nedostatečný, stačí přidat další server. Takto vzniklý kluster následně rozloží data mezi vzniklé uzly optimálně.
Vysoká úroveň dostupnosti. V případě, že některý z uzlů klusteru vykazuje chybu, Elasticsearch jej identifikuje a vyřadí z provozu. Data jsou pak rozdělena mezi zbývající uzly takovým způsobem, aby došlo k zajištění maximální dostupnosti a data tak zůstala v bezpečí.
Možnost fulltextového vyhledávání. Elasticsearch je využívané k vyhledávání v rámci Apache Lucene, což je pravděpodobně nejvýkonnější open source fulltextové vyhledávání. Toto vyhledávání zároveň nabízí podporu většího množství jazyků, vyhledávání založené na geografické poloze, vyhledávání příbuzných a podobných záznamů i vyhledávání ve stylu „měli jste na mysli“. Dá se zároveň použít k inteligentnímu automatickému vyplňování formulářů na webu.
RESTful API. Elasticsearch využívá API. Téměř jakoukoliv akci je možné provést za pomoci dokumentu ve formátu JSON, který je posílán za pomoci HTTP. Pro práci s různými programovacími jazyky je k dispozici řada knihoven, které práci s Elasticsearch zjednodušují.
Mechanismus uložení dat
Elasticsearch je založený na principu bezschémové databáze. Díky tomu není potřeba definovat strukturu databáze. Ta se totiž vytvoří sama na základě dat, která jsou do databáze vložená.
Výhody použití Elasticsearch
Postaveno na základu Lucene. Vzhledem k tomu, že je Elasticsearch postavený na základě Lucene, nabízí jednu z nejsilnějších platforem pro fulltextové vyhledávání.
Fulltextové vyhledávání. Elasticsearch provádí lingvistické vyhledávání v dokumentech a vrací dokumenty, které odpovídají vyhledávacím kritériím. Relevance výsledků pro dané vyhledávání se porovnává za pomoci TF/IDF algoritmu.
Dokumentově orientované. Ukládá komplexní entity ve formě strukturovaných JSON dokumentů a indexuje defaultně všechna pole, čímž zvyšuje výkon.
Bezschémové. Ukládá vysoké množství polostrukturovaných dat ve formě JSON souborů. Automaticky se pokouší detekovat strukturu dat, přítomná data naindexovat a co nejvíce zjednodušit vyhledávání v nich.
RESTful API. Elasticsearch podporuje REST API. Je možné použít Elasticsearch za pomoci REST API skrze plugin Sense do prohlížeče Chrome. Sense nabízí jednoduchý uživatelský interface.
Nevýhody použití Elasticsearch
Podpora více jazyků. Elasticsearch nemá plnou podporu více jazyků ve smyslu podpory requestů a odpovědí (dostupné pouze v JSON). Na rozdíl od toho Apache Solr má možnost použití formátů CSV, XML i JSON.
Ukládání dat. Nejedná se o vhodné řešení uložení dat, jako je tomu u jiných řešení (například MongoDB, Hadoop a další). Pro menší aplikace bude výkon dostatečný, ale pokud pracujete každý den s terabajty dat, Elasticsearch není vhodným nástrojem.
Náročný na učení. Elasticsearch je mocnější a flexibilnější nežli například řešení od Angolie, ale má mnohem strmější křivku učení.