Hur man installerar Elasticsearch på Rocky Linux 8

Elasticsearch är en mycket skalbar öppen källkod sök- och analysmotor i fulltext. Programvaran stöder RESTful-operationer som låter dig lagra, söka och analysera betydande mängder data snabbt och i nästan realtid. Elasticsearch är omtyckt och populär bland systemadministratörer och utvecklare eftersom det är en mäktig sökmotor baserad på Lucene-biblioteket. Det är i allmänhet den underliggande motorn/tekniken som driver applikationer med komplexa sökfunktioner och krav.

I följande handledning kommer du att lära dig hur man installerar Elastic Search på Rocky Linux 8.

Förutsättningar

  • Rekommenderat OS: Rocky Linux 8.+.
  • Användarkonto: Ett användarkonto med sudo- eller root-åtkomst.
  • Nödvändiga paket: curl, java

Uppdatera operativsystem

Uppdatera din Rocky linux operativsystem för att se till att alla befintliga paket är uppdaterade:

sudo dnf upgrade --refresh -y

Handledningen kommer att använda sudo kommando och förutsatt att du har sudo-status.

Så här verifierar du sudo-status på ditt konto:

sudo whoami

Exempel på utdata som visar sudo-status:

[joshua@rockylinux ~]$ sudo whoami
root

För att konfigurera ett befintligt eller nytt sudo-konto, besök vår handledning på Hur man lägger till en användare till Sudoers på Rocky Linux.

Att använda root-konto, använd följande kommando med root-lösenordet för att logga in.

su

Installera Curl

Curl behövs för vissa delar av den här guiden. För att installera det här paketet, skriv följande kommando:

sudo dnf install curl -y

Installera Java

För att framgångsrikt installera och, ännu viktigare, använda Elasticsearch, måste du installera java. Processen är relativt enkel.

Skriv följande kommando för att installera OpenJDK paket:

sudo dnf install java-11-openjdk-devel -y

Exempel på beroenden som kommer att installeras:

Hur man installerar Elasticsearch på Rocky Linux 8

Typ "Y", tryck sedan på "ENTER-TANGENT" för att fortsätta med installationen.

Om du föredrar den senaste versionen av Java 16, se vår guide på Hur man installerar Java 16 (OpenJDK 16) på Rocky Linux 8.

Bekräfta att Java har installerats med följande kommando:

java -version

Exempel utmatning:

openjdk version "11.0.12" 2021-07-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.12+7-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7-LTS, mixed mode, sharing)

Installera Elasticsearch

Elasticsearch är inte tillgängligt i standard Rocky Linux 8 App-ström, så du måste installera den från Elasticsearch RPM-förråd.

Innan du lägger till arkivet, importera GPG-nyckel med följande kommando:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Nästa steg är att skapa en Elasticsearch repo-fil enligt följande:

sudo nano /etc/yum.repos.d/elasticsearch.repo

Väl inne i filen lägger du till följande rader:

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Att spara (CTRL+O), avsluta sedan (CTRL+X).

Installera nu Elasticsearch med följande kommando:

sudo dnf install elasticsearch

Exempel utmatning:

Hur man installerar Elasticsearch på Rocky Linux 8

Typ "Y", tryck sedan på "ENTER-TANGENT" för att fortsätta med installationen

Som standard är Elasticsearch-tjänsten inaktiverad vid uppstart och inte aktiv. För att starta tjänsten och aktivera den vid systemstart, skriv följande (systemctl) kommando:

sudo systemctl enable elasticsearch.service --now

Exempel utmatning:

Executing: /usr/lib/systemd/systemd-sysv-install enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.

Kontrollera att Elasticsearch körs korrekt. Du kommer att använda curl kommando för att skicka en HTTP-begäran till port 9200 on lokalvärd enligt följande:

curl -X GET "localhost:9200/"

Exempel utmatning:

Hur man installerar Elasticsearch på Rocky Linux 8

För att se systemmeddelandet som Elasticsearch loggar på ditt system, skriv följande kommando:

sudo journalctl -u elasticsearch

Exempel på utdatalogg:

-- Logs begin at Sat 2021-08-21 01:54:10 EDT, end at Sat 2021-08-21 02:11:00 EDT. --
Aug 21 02:09:17 localhost.localdomain systemd[1]: Starting Elasticsearch...
Aug 21 02:09:43 localhost.localdomain systemd[1]: Started Elasticsearch.

Hur man konfigurerar Elasticsearch

Elasticsearch-data lagras i standardkatalogen (/var/lib/elasticsearch). För att visa eller redigera konfigurationsfilerna kan du hitta dem i katalogen (/etc/elasticsearch), och java startalternativ kan konfigureras i (/etc/default/elasticsearch) konfigurationsfil.

Standardinställningarna är i första hand bra för enstaka servrar som Elasticsearch körs på lokalvärd endast. Men om du ska konfigurera ett kluster måste du ändra konfigurationsfilen för att tillåta fjärranslutningar.

Konfigurera fjärråtkomst (valfritt)

Som standard lyssnar Elasticsearch endast på localhost. För att ändra detta, öppna konfigurationsfilen enligt följande:

sudo nano /etc/elasticsearch/elasticsearch.yml

Bläddra ner till linje 56 och hitta avsnittet Nätverk och avkommentera (#) följande rad och ersätt den med den interna privata IP-adressen eller den externa IP-adressen enligt följande:

Hur man installerar Elasticsearch på Rocky Linux 8

I exemplet har vi avkommenterat (#) de (nätverk.värd) och ändrade den till en intern privat IP-adress enligt ovan.

Av säkerhetsskäl är den idealisk för att ange adresser; men om du har flera interna eller externa IP-adresser som träffar servern ändra nätverksgränssnittet för att lyssna på alla med inmatning (0.0.0.0) enligt följande:

Hur man installerar Elasticsearch på Rocky Linux 8

Spara konfigurationsfilen (CTRL+O), avsluta sedan (CLTR+X).

Du måste starta om Elasticsearch-tjänsten med följande kommando för att ändringar ska träda i kraft:

sudo systemctl restart elasticsearch

Konfigurera Firewalld för Elasticsearch

Som standard är inga regler inställda för Elasticsearch, vilket kan orsaka problem längre fram.

Lägg först till en ny dedikerad zon för Elasticsearchs brandväggspolicy:

sudo firewall-cmd --permanent --new-zone=elasticsearch

Ange sedan de tillåtna IP-adresserna som är tillåtna att komma åt Memcached.

sudo firewall-cmd --permanent --zone=elasticsearch --add-source=1.2.3.4

Ersätt 1.2.3.4 med IP adress som kommer att läggas till tillåtslistan.

När du har lagt till IP-adresserna, öppna porten för Memcached.

Till exempel, TCP-port 11211.

sudo firewall-cmd --permanent --zone=elasticsearch --add-port=9200/tcp

Observera att du kan ändra standardporten i din konfigurationsfil om du ändrar regeln för öppen brandväggsport ovan till det nya värdet.

När du har kört dessa kommandon laddar du om brandväggen för att implementera de nya reglerna:

sudo firewall-cmd --reload

Exempel på utdata om framgångsrikt:

success

Hur man använder Elasticsearch

För att använda Elasticsearch med hjälp av curl-kommandot är en enkel process. Nedan är några av de mest använda:

Ta bort index

Nedan namnges indexet prover.

curl -X DELETE 'http://localhost:9200/samples'

Lista alla index

curl -X GET 'http://localhost:9200/_cat/indices?v'

Lista alla dokument i index

curl -X GET 'http://localhost:9200/sample/_search'

Fråga med URL-parametrar

Här använder vi Lucene frågeformat för att skriva q=school:Harvard.

curl -X GET http://localhost:9200/samples/_search?q=school:Harvard

Fråga med JSON aka Elasticsearch Query DSL

Du kan fråga med parametrar på URL:en. Men du kan också använda JSON, som visas i följande exempel. JSON skulle vara lättare att läsa och felsöka när du har en komplex fråga än en gigantisk sträng med URL-parametrar.

curl -XGET --header 'Content-Type: application/json' http://localhost:9200/samples/_search -d '{
      "query" : {
        "match" : { "school": "Harvard" }
    }
}'

Listindexmappning

Alla Elasticsearch-fält är index. Så detta listar alla fält och deras typer i ett index.

curl -X GET http://localhost:9200/samples

Lägg till data

curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/1 -d '{
   "school" : "Harvard"			
}'

Uppdatera Dok

Så här lägger du till fält i ett befintligt dokument. Först skapar vi en ny. Då uppdaterar vi det.

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}
}'

Backup index

curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/_reindex -d '{
  "source": {
    "index": "samples"
  },
  "dest": {
    "index": "samples_backup"
  }
}'

Massladda data i JSON-format

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>

Visa klusterhälsa

curl --user $pwd  -H 'Content-Type: application/json' -XGET https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/_cluster/health?pretty

Aggregation och Bucket Aggregation

För en Nginx-webbserver producerar detta antal webbträffar efter användarstad:

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

        }
   }
  }
}
'

Detta utökar det till antalet produktsvarskoder för staden i en Nginx-webbserverlogg

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"
                 }
        }
   }
}'

Använda ElasticSearch med grundläggande autentisering

Om du har aktiverat säkerhet med ElasticSearch, måste du ange användaren och lösenordet som visas nedan för varje curl-kommando:

curl -X GET 'http://localhost:9200/_cat/indices?v' -u elastic:(password)

Vackert tryck

Lägg till ?pretty=true i valfri sökning för att pretty-printa JSON. Så här:

 curl -X GET 'http://localhost:9200/(index)/_search'?pretty=true

För att fråga och returnera endast vissa fält

För att endast returnera vissa fält, placera dem i _source-arrayen:

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" }
    }
}

För att fråga efter datum

När fältet är av typen datum kan du använda datummatematik, så här:

GET filebeat-7.6.2-2020.05.05-000001/_search
 {
    "query": {
        "range" : {
            "event.created": {
                "gte" : "now-7d/d"
            }
        }
}
}

Avinstallera Elasticsearch

Om du inte längre behöver Elasticsearch kan du ta bort programvaran med följande kommando:

sudo dnf autoremove elasticsearch

Kommentarer och slutsats

Du har lärt dig hur du installerar Elasticsearch på Rocky Linux 8 från Elasticsearchs officiella arkiv och konfigurerar grunderna i handledningen. Sammantaget har ElasticSearch många populära funktioner, några nämndes i början av handledningen, men andra inkluderar att göra det möjligt för användare att söka i olika fält med en enda fråga. ElasticSearch ger en enastående nivå av skärning, vilket innebär horisontell skalbarhet, vilket förbättrar prestandan även med ökad belastning.

För mer läsning, besök tjänstemannen dokumentationssida.


Inte vad du letade efter? Försök att söka efter ytterligare tutorials.

Lämna en kommentar