GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren Sie Elasticsearch auf Debian 11 Bullseye

Elasticsearch ist eine hochgradig skalierbare Open-Source-Volltextsuch- und Analysemaschine . Die Software unterstützt RESTful-Vorgänge, mit denen Sie große Datenmengen schnell und nahezu in Echtzeit speichern, durchsuchen und analysieren können. Elasticsearch ist bei Systemadministratoren und Entwicklern sehr beliebt und beliebt, da es sich um eine mächtige Suchmaschine handelt, die auf der Lucene-Bibliothek basiert. Es wird im Allgemeinen als zugrunde liegende Engine/Technologie verwendet, die Anwendungen mit komplexen Suchfunktionen und -anforderungen unterstützt.

Im folgenden Tutorial erfahren Sie, wie Sie Elastic Search unter Debian 11 Bullseye installieren .

Voraussetzungen

  • Empfohlenes Betriebssystem: Debian 11 Bullseye
  • Benutzerkonto: Ein Benutzerkonto mit Sudo- oder Root-Zugriff.
  • Erforderliche Pakete: Curl und Java

Curl installieren

Locke wird für einige Teile dieses Handbuchs benötigt. Um dieses Paket zu installieren, geben Sie den folgenden Befehl ein:

sudo apt install curl -y

Java installieren

Um Elasticsearch erfolgreich zu installieren und, was noch wichtiger ist, zu verwenden , müssen Sie Java installieren . Der Prozess ist ganz einfach.

Geben Sie den folgenden Befehl ein, um OpenJDK zu installieren Paket:

sudo apt install default-jdk

Beispielausgabe mit zu installierenden Paketen:

Um mit der Installation fortzufahren, geben Sie (Y) ein Drücken Sie dann (ENTER) Schlüssel.

Überprüfen Sie als Nächstes die installierte Java-Version und den Build mit dem folgenden Befehl:

java -version

Beispielausgabe unten:

Elasticsearch installieren

Elasticsearch ist in den standardmäßigen Debian 11-Repositorys nicht verfügbar, daher müssen Sie es aus dem Elasticsearch APT-Repository installieren.

Bevor Sie das Repository hinzufügen, importieren Sie den GPG-Schlüssel mit folgendem Befehl:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Beispielausgabe mit (Ok) bestätigen, dass es erfolgreich war:

Nachdem Sie den GPG-Schlüssel hinzugefügt haben, wird den Elasticsearch-Repositorys jetzt vertraut. Fahren Sie mit der Installation des offiziellen Repositorys mit dem folgenden Terminalbefehl fort:

sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

Zum Zeitpunkt der Erstellung des Tutorials ist Elasticsearch 7.13.4 die neueste Version, wird sich jedoch mit der Zeit ändern, und das von Ihnen hinzugefügte Repository wird in Zukunft für alle 7.x.x-Versionen funktionieren.

Aktualisieren Sie als Nächstes Ihre Repository-Liste und installieren Sie Elasticsearch wie folgt:

sudo apt update && sudo apt install elasticsearch

Standardmäßig ist der Elasticsearch-Dienst beim Booten deaktiviert und nicht aktiv. Um den Dienst zu starten und beim Systemstart zu aktivieren, geben Sie Folgendes ein:(systemctl) Befehl:

sudo systemctl enable elasticsearch.service --now

Als Nächstes verwenden Sie curl, um zu überprüfen, ob Elasticsearch ordnungsgemäß ausgeführt wird Befehl zum Senden einer HTTP-Anfrage an Port 9200 auf localhost wie folgt:

curl -X GET "localhost:9200/"

Beispielausgabe zur Überprüfung der korrekten Funktionsweise von Elasticsearch:

Geben Sie den folgenden Befehl ein, um die Systemmeldung anzuzeigen, die Elasticsearch auf Ihrem System protokolliert:

sudo journalctl -u elasticsearch

Beispiel für ein Ausgabeprotokoll:

Elasticsearch konfigurieren

Elasticsearch-Daten werden im Standardverzeichnis (/var/lib/elasticsearch) gespeichert . Um die Konfigurationsdateien anzuzeigen oder zu bearbeiten, finden Sie sie im Verzeichnis (/etc/elasticsearch) , und Java-Startoptionen können in (/etc/default/elasticsearch) konfiguriert werden Konfigurationsdatei.

Die Standardeinstellungen sind meistens gut für einzelne Server, da Elasticsearch auf localhost läuft nur. Wenn Sie jedoch einen Cluster einrichten, müssen Sie die Konfigurationsdatei ändern, um Remote-Verbindungen zuzulassen.

Fernzugriff einrichten (optional)

Standardmäßig lauscht Elasticsearch nur auf localhost. Um dies zu ändern, öffnen Sie die Konfigurationsdatei wie folgt:

sudo nano /etc/elasticsearch/elasticsearch.yml

Scrollen Sie als Nächstes nach unten und suchen Sie den Abschnitt "Netzwerk" und entkommentieren Sie (#) die folgende Zeile und ersetzen Sie sie wie folgt durch die interne private IP-Adresse oder die externe IP-Adresse:

Im Beispiel haben wir (#) auskommentiert der (network.host) und in eine interne private IP-Adresse geändert.

Aus Sicherheitsgründen ist es ideal für die Angabe von Adressen; Wenn Sie jedoch mehrere interne oder externe IP-Adressen haben, die auf den Server zugreifen, ändern Sie die Netzwerkschnittstelle so, dass sie alle abhört, indem Sie (0.0.0.0) eingeben wie folgt:

Als nächstes speichern Sie die Konfigurationsdatei (CTRL+O) Beenden Sie dann (CLTR+X) .

Sie müssen den Elasticsearch-Dienst mit dem folgenden Befehl neu starten, damit die Änderungen wirksam werden:

sudo systemctl restart elasticsearch

Konfigurieren Sie die UFW-Firewall, um Remote-Verbindungen zuzulassen

Wenn Sie Remote-Verbindungen zulassen, müssen Sie Ihrer Firewall erlauben, diese IP-Adressen zu verbinden. Dies kann mit dem folgenden Befehl erfolgen:

sudo ufw allow from <IP Address> to any port 9200

Weitere Informationen zu Debian und der UFW-Firewall finden Sie unter Konfigurieren der UFW-Firewall unter Debian.

So verwenden Sie Elasticsearch

So verwenden Sie Elasticsearch mit dem curl-Befehl ist ein unkomplizierter Vorgang. Unten sind einige der am häufigsten verwendeten:

Index löschen

Unterhalb des Index heißt es Beispiele .

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

Alle Indizes auflisten

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

Alle Dokumente im Index auflisten

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

Abfrage mit URL-Parametern

Hier verwenden wir das Lucene-Abfrageformat, um q=school:Harvard.

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

Abfrage mit JSON, auch bekannt als Elasticsearch Query DSL

Sie können Abfragen mithilfe von Parametern für die URL durchführen. Sie können aber auch JSON verwenden, wie im nächsten Beispiel gezeigt. JSON wäre einfacher zu lesen und zu debuggen, wenn Sie eine komplexe Abfrage haben, als eine riesige Zeichenfolge von URL-Parametern.

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

Listenindexzuordnung

Alle Elasticsearch-Felder sind Indizes. Das listet also alle Felder und ihre Typen in einem Index auf.

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

Daten hinzufügen

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

Dokument aktualisieren

So fügen Sie einem bestehenden Dokument Felder hinzu. Zuerst erstellen wir eine neue. Dann aktualisieren wir es.

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

Sicherungsindex

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

Bulk-Load-Daten im 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>

Clusterzustand anzeigen

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

Aggregation und Bucket-Aggregation

Für einen Nginx-Webserver erzeugt dies Web-Trefferzahlen nach Benutzerstadt:

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

        }
   }
  }
}
'

Dies erweitert dies um die Anzahl der Produktantwortcodes durch die Stadt in einem Nginx-Webserverprotokoll

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

Verwendung von ElasticSearch mit Basisauthentifizierung

Wenn Sie die Sicherheit mit ElasticSearch aktiviert haben, müssen Sie den Benutzer und das Passwort wie unten gezeigt für jeden Curl-Befehl angeben:

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

Hübscher Druck

Fügen Sie ?pretty=true zu jeder Suche hinzu, um den JSON-Code hübsch auszudrucken. So:

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

Um nur bestimmte Felder abzufragen und zurückzugeben

Um nur bestimmte Felder zurückzugeben, fügen Sie sie in das _source-Array ein:

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

Nach Datum abfragen

Wenn das Feld vom Typ Datum ist, können Sie Datumsberechnungen wie folgt verwenden:

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

Elasticsearch deinstallieren

Wenn Sie Elasticsearch nicht mehr benötigen, können Sie die Software mit dem folgenden Befehl entfernen:

sudo apt remove elasticsearch

Entfernen Sie das apt-Repository wie folgt:

sudo rm /etc/apt/sources.list.d/elastic-7.x.list

Aktualisieren Sie dann Ihre Repository-Liste, um die Änderungen widerzuspiegeln:

sudo apt update

Debian
  1. So installieren Sie Elasticsearch unter Debian Linux

  2. So installieren Sie R unter Debian 9

  3. So installieren Sie Elasticsearch auf Debian 9

  4. So installieren Sie Python 3.8 auf Debian 11 Bullseye

  5. So installieren Sie Python 3.9 auf Debian 11 Bullseye

So installieren Sie VidCutter unter Debian 11 Bullseye

So installieren Sie PuTTY unter Debian 11 Bullseye

So installieren Sie Graylog unter Debian 9

So installieren Sie Go unter Debian 10

So installieren Sie Elasticsearch unter Debian 11

So installieren Sie Go unter Debian