Elasticsearch je bezplatný a open source vyhledávač založený na Apache Lucene a vybavený funkcí Full Text a podporou distribuovaných architektur. Jedná se o dlouhodobě zavedené řešení v oblasti analýzy dat v reálném čase.
V tomto tutoriálu najdete všechny potřebné kroky k vytvoření a konfiguraci serveru Elasticsearch na Linuxu Ubuntu 18.04.
Nejprve se připojte k serveru prostřednictvím připojení SSH. Pokud jste tak ještě neučinili, doporučujeme se podle našeho průvodce bezpečně připojit pomocí SSH. V případě lokálního serveru přejděte k dalšímu kroku a otevřete terminál svého serveru.
Instalace Java
Než budete pokračovat v instalaci Elasticsearch, nainstalujte Java Development Kit. Chcete-li tak učinit, postupujte podle našeho průvodce, jak nainstalovat Javu na Ubuntu 18.04. V případě, že je JDK již ve vašem systému nainstalován, tento krok přeskočte.
Instalace Elasticsearch
Instalační balíček lze stáhnout přímo z webu Elastic:
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-amd64.deb
Po dokončení stahování pokračujte instalací balíčku:
$ sudo dpkg -i elasticsearch-7.3.2-amd64.deb
Potom pokračujte instalací a spuštěním služby prostřednictvím:
$ sudo systemctl enable elasticsearch.service
$ sudo systemctl start elasticsearch.service
Konfigurace brány firewall
V případě brány firewall v systému může být nutné povolit provoz do služby Elasticsearch povolením příslušného portu.
Při použití brány firewall UFW zadejte tento příkaz pro odemknutí výchozího portu Elasticsearch:
$ sudo ufw allow 9200
V tomto okamžiku brána firewall povolí připojení na portu 9200.
Kontrola stavu služby
Ověřte, zda je služba spuštěna, a zkontrolujte porty TCP, které aktuálně naslouchají, spuštěním:
$ netstat -a -o -n | grep LISTEN
Potom naslouchací porty 9200 a 9300, jak by měly být vidět, následovně:
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN off (0.00/0/0)
tcp6 0 0 127.0.0.1:9200 :::* LISTEN off (0.00/0/0)
tcp6 0 0 ::1:9200 :::* LISTEN off (0.00/0/0)
tcp6 0 0 127.0.0.1:9300 :::* LISTEN off (0.00/0/0)
tcp6 0 0 ::1:9300 :::* LISTEN off (0.00/0/0)
Použití Elasticsearch
Nyní, když je služba spuštěna, použijte testy zadáním dat a kontrolou, zda byla později nalezena.
N.B. Pokud používáte vzdálený server, nahraďte localhost IP adresou vašeho serveru v příkazech uvedených níže.
V tomto příkladu zadejte 3 komerční produkty:
$ curl -POST 'http://localhost:9200/products/1' -curl -H 'Content-Type: application/json' -d '
{
"name": "Coffe Machine 1",
"uuid": "00000010"
}'
Provedením výše uvedeného volání bude do indexu "products" vložen nový dokument s atributem "name" odpovídajícím "Coffe Machine 1" a s identifikátorem "uuid":
{"_index":"index","_type":"products","_id":"cUqGY20Bm2mQybZCoeKU","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
Elasticsearch odpoví, jak je uvedeno výše, zadáním ID vloženého produktu a dalších údajů v přehledech.
Poté pokračujte vložením 2 dalších produktů:
$ curl -POST 'http://localhost:9200/index/products' -curl -H 'Content-Type: application/json' -d '
{
"name": "White Desk",
"uuid": "WD000010"
}'
$ curl -POST 'http://localhost:9200/index/products' -curl -H 'Content-Type: application/json' -d '
{
"name": "Black Desk",
"uuid": "WD000011"
}'
Po dokončení můžete pokračovat provedením prvního vyhledávání, přičemž jako parametr vyhledávání uvedete „Stůl“:
$ curl -X GET "http://localhost:9200/index/_search?q=Desk*&pretty"
Jak můžete vidět, byly získány 2 výsledky, včetně dvou výše vložených ploch:
{
...
"hits" : [
{
….
"_source" : {
"name" : "White Desk",
"uuid" : "WD000010"
}
},
{
...
"_score" : 1.0,
"_source" : {
"name" : "Black Desk",
"uuid" : "WD000011"
}
}
]
}
}
Konfigurace Elastisearch
Všechny konfigurační soubory Elasticsearch jsou v adresáři /etc/elasticsearch. Nejdůležitějším souborem je elasticsearch.yml, který umožňuje upravovat základní provozní parametry systému, jako jsou informace o clusteru, parametry připojení TCP/IP nebo složky, kam se mají data ukládat.
Všechny přítomné konfigurační soubory používají formát YAML, takže při úpravách těchto souborů věnujte pozornost odsazení.
Zlepšení zabezpečení
Jednou z prvních věcí, které je třeba pro zvýšení bezpečnosti služby udělat, je omezit příchozí připojení a povolit pouze ta místní. Tímto způsobem může službu používat pouze vaše aplikace na serveru.
Chcete-li upravit poslechovou kartu, změňte soubor /etc/elasticsearch/elasticsearch.yml a odkomentujte a upravte následující řádek:
…
network.host: 127.0.0.1
...
Uložte soubor a restartujte službu, aby se změny projevily:
$ sudo systemctl restart elasticsearch.service
Počkejte několik minut a ověřte, že služba naslouchá pouze na místním rozhraní spuštěním:
$ netstat -a -o -n | grep LISTEN
Aby služba zůstala dostupná i pro externí použití, je vždy možná změna naslouchacího portu, aby se skryla přítomnost Elasticsearch.
Upravte hlavní konfigurační soubor /etc/elasticsearch/elasticsearch.yml:
…
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
http.port: 2900
...
Poznámka:Místo dveří 2900 lze vložit jakékoli jiné dveře.
Po uložení souboru restartujte službu:
$ sudo systemctl restart elasticsearch.service
Chcete-li zkontrolovat stav služby, po použití změn vždy použijte netstat:
$ netstat -a -o -n | grep LISTEN