Elasticsearch

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Elasticsearch
Vývojář Shay Banon
Aktuální verze 1.3.2
Operační systém multiplatformní
Vyvíjeno v Java
Typ softwaru Fulltextové vyhledávání
Licence Apache License 2.0
Web http://www.elasticsearch.org

Elasticsearch je fulltextový vyhledávač vycházející z Apache Lucene. Disponuje RESTful rozhraním a nabízí vysokou dostupnost, rychlost a škálovatelnost. Je vyvíjený v Javě a komunikovat s ním lze pomocí webového rozhraní. Je šířen zdarma pod licencí Apache.

Klíčové vlastnosti[editovat | editovat zdroj]

Data v reálném čase[editovat | editovat zdroj]

Hlavním rysem Elasticsearch je jeho rychlost, Díky tomu je možné například na webových stránkách používat filtry a výsledky vyhledávání se zobrazují prakticky okamžitě.

Distribuovaný systém[editovat | editovat zdroj]

Elasticsearch lze snadno škálovat dle toho, jak se zvyšuje zatížení serveru, na němž běží. Pokud výkon serveru nestačí, stačí přidat další server. Takto vzniklý cluster pak rozloží data mezi vzniklé uzly co nejoptimálněji.

Vysoká dostupnost[editovat | editovat zdroj]

Pokud některý z uzlů clusteru vykazuje chybu, Elasticsearch jej detekuje a vyřadí z provozu. Data pak rozdělí mezi zbylé uzly tak, aby byla zajištěna co nejvyšší dostupnost a data zůstala v bezpečí.

Fulltextové vyhledávání[editovat | editovat zdroj]

Elasticsearch využívá k vyhledávání Apache Lucene, což je patrně nejvýkonnější fulltextové vyhledávání dostupné v rámci open source software. Vyhledávání nabízí podporu více jazyků, vyhledávání na základě geografické polohy, vyhledávání podobných nebo příbuzných záznamů, vyhledávání ve stylu "měli jste na mysli". Lze jej také využít k inteligentnímu automatickému doplňování formulářů na webu.

RESTful API[editovat | editovat zdroj]

Elastic využívá API - téměř každá akce může být provedena pomocí dokumentu ve formátu JSON, který je zasílán přes HTTP. Pro mnoho programovacích jazyků také existují také knihovny zjednodušující práci s Elasticsearch.

Způsob uložení dat[editovat | editovat zdroj]

Elasticsearch je bezschémovou databází. Není tedy třeba definovat strukturu databáze, ta se vytvoří sama na základě vložených dat.

Komunikace s Elasticsearch[editovat | editovat zdroj]

Komunikace probíhá přes HTTP - například mazání probíhá pomocí HTTP metody DELETE. Požadavky i odpovědi se zasílají ve formátu JSON. Díky tomu je možné Elasticsearch využívat v jakémkoli programovacím jazyce.

Instalace[editovat | editovat zdroj]

Nejprve je nutné stáhnout aktuální distribuci z oficiálního webu http://www.elasticsearch.org/download/. Stažený archiv je nutné rozbalit. Poté stačí spustit skript elasticsearch ve složce bin, v případě Unixu s parametrem -f. K dispozici jsou také balíčky DEB a RPM pro uživatele Linuxu.

Příklad stažení a spuštění[editovat | editovat zdroj]

wget https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.90.9.tar.gz
tar -zxvf elasticsearch-0.90.9.tar.gz
cd elasticsearch-0.90.9.tar.gz
bin/elasticsearch -f

To, že spuštění proběhlo v pořádku lze ověřit zadáním příkazem curl -X GET http://localhost:9200/, případně zadáním adresy http://localhost:9200/ do webového prohlížeče.

Nástroje usnadňující práci s Elasticsearch[editovat | editovat zdroj]

Důležitým nástrojem, který umožňuje snadné prohledávání dat je Elastic HQ. Dostupný je na adrese http://www.elastichq.org/app/index.php a celý je napsaný v JavaScriptu. běží tedy kompletně ve webovém prohlížeči a přitom jej není třeba instalovat. Stačí zadat adresu, na které je Elasticsearch dostupný a hned je možné prozkoumávat cluster včetně jednotlivých uzlů.

Dalším nástrojem, který může usnadnit práci s Elasticsearch, je doplněk pro prohlížeč Chrome Postman. Ten umožňuje zasílat HTTP požadavky, vybírat druh požadavku (POST, GET atd.), podporuje zvýrazňování syntaxe textu ve formátu JSON a umožňuje procházet historii zaslaných dotazů.

Příklady použití[editovat | editovat zdroj]

# Vytvoření indexu
$ curl -XPUT 'http://localhost:9200/twitter/'
 
 # Přidání dokumentu
$ curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
     "tweet" : {
         "user" : "kimchy",
         "post_date" : "2009-11-15T14:12:12",
        "message" : "trying out Elastic Search"
    }
 }'
 
 # Získání dokumentu dle jeho id
$ curl -XGET 'http://localhost:9200/twitter/tweet/1'
 
 # Vyhledání dokumentu
$ curl -XGET 'http://localhost:9200/twitter/tweet/_search?q=user:kimchy'  

Použití[editovat | editovat zdroj]

Elasticsearch používá například: GitHub, Foursquare, SoundCloud nebo StackOverflow.

Externí odkazy[editovat | editovat zdroj]

Oficiální web[editovat | editovat zdroj]

http://www.elasticsearch.org/

Články v češtině[editovat | editovat zdroj]

http://www.zdrojak.cz/clanky/elasticsearch-vyhledavame-cesky/

Články v angličtině[editovat | editovat zdroj]

http://www.elasticsearchtutorial.com/elasticsearch-in-5-minutes.html

http://joelabrahamsson.com/elasticsearch-101/

http://exploringelasticsearch.com/

http://www.javacodegeeks.com/2013/04/getting-started-with-elasticsearch.html