Elasticsearch je vysoce škálovatelný open source fulltextový vyhledávač a analytický nástroj . Obecně je to základní motor/technologie, která pohání aplikace s komplexními vyhledávacími funkcemi a požadavky. Software podporuje operace RESTful, které vám umožňují ukládat, vyhledávat a analyzovat významné objemy dat rychle a téměř v reálném čase. Elasticsearch je mezi systémovými administrátory a vývojáři velmi oblíbený a oblíbený, protože je to mocný vyhledávač založený na knihovně Lucene.
V následujícím tutoriálu se dozvíte, jak nainstalovat Elastic Search na openSUSE Leap 15 .
Předpoklady
- Doporučený operační systém: openSUSE Leap – 15.x
- Uživatelský účet: Uživatelský účet s přístupem sudo nebo root.
Aktualizujte operační systém
Aktualizujte své openSUSE operační systém, abyste se ujistili, že všechny existující balíčky jsou aktuální:
sudo zypper refresh
Výukový program bude používatpříkaz sudo a za předpokladu, že máte status sudo .
Chcete-li ověřit stav sudo na vašem účtu:
sudo whoami
Ukázkový výstup zobrazující stav sudo:
[joshua@opensuse ~]$ sudo whoami
root
Chcete-li nastavit stávající nebo nový účet sudo, navštivte náš tutoriál o přidání uživatele do Sudoers na openSUSE .
Chcete-li použít rootový účet , použijte k přihlášení následující příkaz s heslem uživatele root.
su
Nainstalujte balíček CURL
CURL Pro některé části této příručky je vyžadován příkaz. Chcete-li nainstalovat tento balíček, zadejte následující příkaz:
sudo zyper install curl
Nainstalujte balíček Java
Chcete-li úspěšně nainstalovat, a co je důležitější, použijte Elasticsearch , je třeba nainstalovat Java . Tento proces je poměrně snadný.
Chcete-li nainstalovat OpenJDK , zadejte následující příkaz balíček:
sudo zypper install java-11-openjdk-devel
Nainstalujte Elasticsearch
Elasticsearch není k dispozici ve standardním úložišti openSUSE , takže jej musíte nainstalovat z úložiště Elasticsearch .
Před přidáním úložiště importujte klíč GPG pomocí následujícího příkazu:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Dalším krokem je vytvoření repo souboru Elasticsearch následovně:
sudo zypper ar https://artifacts.elastic.co/packages/7.x/yum elasticsearch
Nyní nainstalujte Elasticsearch pomocí následujícího příkazu:
sudo zypper install elasticsearch
Příklad výstupu:
Zadejte Y poté stiskněte klávesu ENTER pokračujte v instalaci
Chcete-li aktivovat Elasticsearch ve výchozím nastavení, budete muset nainstalovat balíček insserv .
sudo zypper install insserv
Ve výchozím nastavení je služba Elasticsearch při spouštění zakázána a není aktivní. Chcete-li službu spustit a povolit při spouštění systému, zadejte následující (systemctl) příkaz:
sudo systemctl enable elasticsearch.service --now
Příklad výstupu:
Synchronizing state of elasticsearch.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable elasticsearch
Ověřte, že Elasticsearch běží správně pomocí příkazu curl odeslat požadavek HTTP na port 9200 na localhost takto:
sudo curl http://localhost:9200?pretty
Příklad výstupu:
Jak nakonfigurovat Elasticsearch
Data Elasticsearch jsou uložena ve výchozím umístění adresáře (/var/lib/elasticsearch) . Chcete-li zobrazit nebo upravit konfigurační soubory, najdete je v umístění adresáře (/etc/elasticsearch) a možnosti spouštění jazyka Java lze nakonfigurovat v (/etc/default/elasticsearch) konfigurační soubor.
Výchozí nastavení je vhodné především pro jednotlivé operační servery, protože Elasticsearch běží na localhost pouze. Pokud se však chystáte nastavit cluster, budete muset upravit konfigurační soubor tak, aby umožňoval vzdálená připojení.
Nastavení vzdáleného přístupu (volitelné)
Ve výchozím nastavení Elasticsearch naslouchá pouze localhost. Chcete-li to změnit, otevřete konfigurační soubor následovně:
sudo nano /etc/elasticsearch/elasticsearch.yml
Přejděte dolů na řádek 56 a najděte sekci Síť a zrušte komentář (#) následující řádek a nahraďte jej adresou Internal Private IP nebo External IP takto:
V příkladu jsme zrušili komentář (#) (network.host) a změnil ji na interní soukromou IP adresu, jak je uvedeno výše.
Z bezpečnostních důvodů je ideální pro specifikaci adres; pokud však máte na server více interních nebo externích IP adres, změňte síťové rozhraní tak, aby naslouchalo všem zadáním (0.0.0.0) takto:
Uložte konfigurační soubor (CTRL+O), poté ukončete (CLTR+X) .
Aby se změny projevily, budete muset restartovat službu Elasticsearch pomocí následujícího příkazu:
sudo systemctl restart elasticsearch
Nakonfigurujte bránu firewall pro Elasticsearch
Ve výchozím nastavení nejsou pro Elasticsearch nastavena žádná pravidla, což může způsobit problémy.
Nejprve přidejte novou vyhrazenou zónu pro zásady brány firewall Elasticsearch:
sudo firewall-cmd --permanent --new-zone=elasticsearch
Dále zadejte povolené IP adresy, které mají povolen přístup k Memcached.
sudo firewall-cmd --permanent --zone=elasticsearch --add-source=1.2.3.4
Nahraďte 1.2.3.4 adresou IP adresu, která bude přidána do seznamu povolených.
Jakmile dokončíte přidávání IP adres, otevřete port Memcached.
Například port TCP 11211 .
sudo firewall-cmd --permanent --zone=elasticsearch --add-port=9200/tcp
Poznámka, můžete změnit výchozí port v konfiguračním souboru, pokud změníte pravidlo otevření portu brány firewall výše na novou hodnotu.
Po spuštění těchto příkazů znovu načtěte bránu firewall, aby byla implementována nová pravidla:
sudo firewall-cmd --reload
Příklad výstupu v případě úspěchu:
success
Jak používat Elasticsearch
Chcete-li použít Elasticsearch pomocí příkazu curl je přímočarý proces. Níže jsou uvedeny některé z nejčastěji používaných:
Smazat index
Pod indexem je název vzorky .
curl -X DELETE 'http://localhost:9200/samples'
Seznam všech indexů
curl -X GET 'http://localhost:9200/_cat/indices?v'
Seznam všech dokumentů v indexu
curl -X GET 'http://localhost:9200/sample/_search'
Dotaz pomocí parametrů adresy URL
Zde používáme formát dotazu Lucene k zápisu q=school:Harvard.
curl -X GET http://localhost:9200/samples/_search?q=school:Harvard
Dotaz pomocí JSON alias Elasticsearch Query DSL
Můžete se dotazovat pomocí parametrů na adrese URL. Ale můžete také použít JSON, jak ukazuje následující příklad. JSON by bylo snazší číst a ladit, když máte složitý dotaz než jeden obrovský řetězec parametrů URL.
curl -XGET --header 'Content-Type: application/json' http://localhost:9200/samples/_search -d '{
"query" : {
"match" : { "school": "Harvard" }
}
}'
Vypsat mapování indexů
Všechna pole Elasticsearch jsou indexy. Toto uvádí seznam všech polí a jejich typů v indexu.
curl -X GET http://localhost:9200/samples
Přidat data
curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/1 -d '{
"school" : "Harvard"
}'
Aktualizovat dokument
Zde je návod, jak přidat pole do existujícího dokumentu. Nejprve vytvoříme nový. Poté jej aktualizujeme.
curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2 -d '
{
"school": "Clemson"
}'
curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2/_update -d '{
"doc" : {
"students": 50000}
}'
Index zálohy
curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/_reindex -d '{
"source": {
"index": "samples"
},
"dest": {
"index": "samples_backup"
}
}'
Hromadné načítání dat ve formátu JSON
export pwd="elastic:"
curl --user $pwd -H 'Content-Type: application/x-ndjson' -XPOST 'https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/0/_bulk?pretty' --data-binary @<file>
Zobrazit stav clusteru
curl --user $pwd -H 'Content-Type: application/json' -XGET https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/_cluster/health?pretty
Agregace a agregace segmentů
Pro webový server Nginx to vytváří počty návštěv webu podle města uživatele:
curl -XGET --user $pwd --header 'Content-Type: application/json' https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
"aggs": {
"cityName": {
"terms": {
"field": "geoip.city_name.keyword",
"size": 50
}
}
}
}
'
Tím se to rozšiřuje na počet kódů odezvy produktu města v protokolu webového serveru Nginx
curl -XGET --user $pwd --header 'Content-Type: application/json' https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
"aggs": {
"city": {
"terms": {
"field": "geoip.city_name.keyword"
},
"aggs": {
"responses": {
"terms": {
"field": "response"
}
}
}
},
"responses": {
"terms": {
"field": "response"
}
}
}
}'
Použití ElasticSearch se základním ověřováním
Pokud jste zapnuli zabezpečení pomocí ElasticSearch, musíte ke každému příkazu curl zadat uživatele a heslo, jak je uvedeno níže:
curl -X GET 'http://localhost:9200/_cat/indices?v' -u elastic:(password)
Krásný tisk
Chcete-li JSON pěkně vytisknout, přidejte k libovolnému vyhledávání ?pretty=true. Takhle:
curl -X GET 'http://localhost:9200/(index)/_search'?pretty=true
Pro dotaz a vrácení pouze určitých polí
Chcete-li vrátit pouze určitá pole, vložte je do pole _source:
GET filebeat-7.6.2-2020.05.05-000001/_search
{
"_source": ["suricata.eve.timestamp","source.geo.region_name","event.created"],
"query": {
"match" : { "source.geo.country_iso_code": "GR" }
}
}
Na dotaz podle data
Pokud je pole typu datum, můžete použít matematiku data, například takto:
GET filebeat-7.6.2-2020.05.05-000001/_search
{
"query": {
"range" : {
"event.created": {
"gte" : "now-7d/d"
}
}
}
}
Jak odebrat (odinstalovat) Elasticsearch
Pokud již Elasticsearch nepotřebujete, můžete software odebrat pomocí následujícího příkazu:
sudo zypper remove elasticsearch
Příklad výstupu:
Zadejte Y poté stiskněte klávesu ENTER pokračovat v odstraňování Elasticsearch.