Detailliertes Tutorial zur Installation von ElasticSearch 6.4.1 auf CentOS7

Detailliertes Tutorial zur Installation von ElasticSearch 6.4.1 auf CentOS7

1. Laden Sie das ElasticSearch 6.4.1-Installationspaket herunter von:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.1.tar.gz

2. Entpacken Sie das komprimierte Paket

[root@localhost ElasticSearch]# tar -zxvf elasticsearch-6.4.1.tar.gz

3. ElasticSearch starten

[root@localhost bin]# ./elasticsearch

Im Hintergrundmodus starten

[root@localhost bin]# ./elasticsearch -d

TIPPS:

[root@localhost bin]# ./elasticsearch
[2018-09-19T19:46:09,817][WARN ][oebElasticsearchUncaughtExceptionHandler] [] nicht abgefangene Ausnahme im Thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: Elasticsearch kann nicht als Root ausgeführt werden
  bei org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[elasticsearch-6.4.1.jar:6.4.1]
  bei org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.4.1.jar:6.4.1]
  bei org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.4.1.jar:6.4.1]
  bei org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.4.1.jar:6.4.1]
  bei org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.4.1.jar:6.4.1]
  bei org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.4.1.jar:6.4.1]
  bei org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.4.1.jar:6.4.1]
Ursache: java.lang.RuntimeException: Elasticsearch kann nicht als Root ausgeführt werden
  bei org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:104) ~[elasticsearch-6.4.1.jar:6.4.1]
  bei org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:171) ~[elasticsearch-6.4.1.jar:6.4.1]
  bei org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[elasticsearch-6.4.1.jar:6.4.1]
  bei org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.4.1.jar:6.4.1]

ElasticSearch kann nicht mit der Root-Benutzerrolle gestartet werden, daher müssen Sie das Installationsverzeichnis für andere Benutzer autorisieren und es mit anderen Benutzern starten.

Überprüfen Sie nach dem erfolgreichen Start, öffnen Sie ein neues Terminal und führen Sie den folgenden Befehl aus:

[root@localhost ~]# curl 'http://localhost:9200/?pretty'
{
 "Name" : "O5BAVYE",
 "Clustername": "Elasticsearch",
 "cluster_uuid" : "rw1yjlzkSgODXkUVgIxmxg",
 "version" : {
  "Nummer" : "6.4.1",
  "build_flavor" : "Standard",
  "Buildtyp": "tar",
  "build_hash" : "e36acdb",
  "build_date" : "2018-09-13T22:18:07.696808Z",
  "build_snapshot" : falsch,
  "lucene_version" : "7.4.0",
  "minimum_wire_compatibility_version" : "5.6.0",
  "Minimum_Index_Compatibility_Version": "5.0.0"
 },
 "Tagline": "Sie wissen schon, für die Suche"
}
[root@localhost ~] 

Wenn die Informationen zurückgegeben werden, war die Installation erfolgreich!

4. Installieren Sie Kibana

Sense ist eine Kibana-Anwendung, die eine interaktive Konsole zum direkten Senden von Anfragen an Elasticsearch über Ihren Browser bereitstellt. Die Online-Version des Buches enthält einen Link zu View in Sense, das viele Codebeispiele enthält. Wenn Sie darauf klicken, wird eine Sense-Konsole mit Codebeispielen geöffnet. Sie müssen Sense nicht installieren, aber es ermöglicht Ihnen, den Beispielcode auf einem lokalen Elasticsearch-Cluster zu testen, was das Buch interaktiver macht.

Kibana herunterladen

Kibana ist eine von ElasticSearch bereitgestellte Weboberfläche zur Datenanalyse. Es kann verwendet werden, um Protokolle effizient zu durchsuchen, zu visualisieren, zu analysieren und andere Vorgänge auszuführen
https://artifacts.elastic.co/downloads/kibana/kibana-6.4.1-linux-x86_64.tar.gz

Herunterladen und Entpacken von Kibana

[root@localhost ElasticSearch]# tar -zxvf kibana-6.4.1-linux-x86_64.tar.gz

Ändern Sie die Datei kibana.yml im Konfigurationsverzeichnis und konfigurieren Sie die Elasticsearch-Adresse und die Kibana-Adressinformationen

server.host: "192.168.92.50" # Kibana-Serveradresse elasticsearch.url: "http://192.168.92.50:9200" # ES-Adresse

Starten Sie Kibana

[root@localhost bin]# ./kibana

Installieren Sie den lokalen Zugriff auf Kibana: http://localhost:5601/

Wählen Sie das Menü Dev Tools, um die Anfrage zu visualisieren

5. Installieren Sie LogStash

logStash herunterladen
https://artifacts.elastic.co/downloads/logstash/logstash-7.0.1.tar.gz

Nach dem Herunterladen und Entpacken konfigurieren Sie die Protokollsammlungs-Protokollkonfigurationsdatei logstash.conf im Konfigurationsverzeichnis

# Beispiel einer Logstash-Konfiguration zum Erstellen einer einfachen
# Beats -> Logstash -> Elasticsearch-Pipeline.

Eingabe {
 tcp {
  Modus => "Server"
  Host => "192.168.92.50"
  Port => 4560
  Codec => json_lines
 }
}
Ausgabe {
 elastische Suche
  Hosts => "192.168.92.50:9200"
  index => "springboot-logstash-%{+JJJJ.MM.tt}"
 }
}

Nach erfolgreicher Konfiguration starten Sie logstatsh

[root@localhost bin]# ./logstash -f ../config/logstash.conf

Einige Grundkenntnisse zu ES:

Index (Substantiv):

Wie bereits erwähnt, ähnelt ein Index einer Datenbank in einer herkömmlichen relationalen Datenbank, in der relationale Dokumente gespeichert werden. Die Pluralform von Index ist Indizes oder Indizes.

Index (Verb):

Unter der Indexierung eines Dokuments versteht man die Speicherung eines Dokuments in einem Index (Substantiv), sodass es abgerufen und abgefragt werden kann. Dies ist dem Schlüsselwort INSERT in einer SQL-Anweisung sehr ähnlich, mit der Ausnahme, dass das neue Dokument das alte Dokument ersetzt, falls es bereits vorhanden ist.

Invertierter Index:

Relationale Datenbanken erhöhen die Geschwindigkeit des Datenabrufs, indem sie einer angegebenen Spalte einen Index, beispielsweise einen B-Baum-Index, hinzufügen. Elasticsearch und Lucene verwenden eine Struktur namens invertierter Index, um denselben Zweck zu erreichen.

PUT /megacorp/mitarbeiter/1
{
  "Vorname" : "John",
  "Nachname" : "Smith",
  "Alter" : 25,
  "about" : "Ich liebe es, klettern zu gehen",
  "Interessen": [ "Sport", "Musik" ]
}

Widerrufsfolgen:

#! Veraltet: Die Standardanzahl der Shards wird in 7.0.0 von [5] auf [1] geändert. Wenn Sie weiterhin die Standardanzahl von [5] Shards verwenden möchten, müssen Sie dies bei der Indexerstellungsanforderung oder mit einer Indexvorlage verwalten.
{
 "_index": "Megakonzern",
 "_type": "Mitarbeiter",
 "_id": "1",
 "_version": 1,
 "Ergebnis": "erstellt",
 "_Scherben": {
  "insgesamt": 2,
  "erfolgreich": 1,
  "fehlgeschlagen": 0
 },
 "_seq_no": 0,
 "_primary_term": 1
}

Der Pfad /megacorp/employee/1 enthält drei Informationsteile:

Megacorp-Indexname

Name des Mitarbeitertyps

1 ID eines bestimmten Mitarbeiters

Platzieren Sie die zweiten Mitarbeiterinformationen:

{
 "_index": "Megakonzern",
 "_type": "Mitarbeiter",
 "_id": "2",
 "_version": 1,
 "Ergebnis": "erstellt",
 "_Scherben": {
  "insgesamt": 2,
  "erfolgreich": 1,
  "fehlgeschlagen": 0
 },
 "_seq_no": 0,
 "_primary_term": 1
}

Widerrufsfolgen:

{
 "_index": "Megakonzern",
 "_type": "Mitarbeiter",
 "_id": "2",
 "_version": 1,
 "Ergebnis": "erstellt",
 "_Scherben": {
  "insgesamt": 2,
  "erfolgreich": 1,
  "fehlgeschlagen": 0
 },
 "_seq_no": 0,
 "_primary_term": 1
}

Platzieren Sie die dritten Mitarbeiterinformationen

{
 "_index": "Megakonzern",
 "_type": "Mitarbeiter",
 "_id": "3",
 "_version": 1,
 "Ergebnis": "erstellt",
 "_Scherben": {
  "insgesamt": 2,
  "erfolgreich": 1,
  "fehlgeschlagen": 0
 },
 "_seq_no": 0,
 "_primary_term": 1
}

5. Dokumente abrufen

Daten für einen einzelnen Mitarbeiter abrufen

GET /megacorp/employee/1

Widerrufsfolgen:

{
 "_index": "Megakonzern",
 "_type": "Mitarbeiter",
 "_id": "1",
 "_version": 1,
 "gefunden": wahr,
 "_Quelle": {
  "Vorname": "John",
  "Nachname": "Smith",
  "Alter": 25,
  "about": "Ich liebe es, klettern zu gehen",
  "Interessen": [
   "Sport",
   "Musik"
  ]
 }
}

6. Leichte Suche

Ein GET ist ziemlich einfach und ruft direkt das angegebene Dokument ab. Versuchen wir jetzt etwas Anspruchsvolleres, etwa eine einfache Suche!

Die erste Suche, die Sie ausprobieren können, ist fast die einfachste. Um alle Mitarbeiter zu suchen, verwenden wir folgende Abfrage:

GET /megacorp/employee/_search

Widerrufsfolgen:

{
 "nahm": 31,
 "timed_out": falsch,
 "_Scherben": {
  "insgesamt": 5,
  "erfolgreich": 5,
  "übersprungen": 0,
  "fehlgeschlagen": 0
 },
 "Treffer": {
  "insgesamt": 3,
  "max_score": 1,
  "Treffer": [
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "2",
    "_score": 1,
    "_Quelle": {
     "Vorname": "Jane",
     "Nachname": "Smith",
     "Alter": 32,
     "about": "Ich sammle gerne Rockalben",
     "Interessen": [
      "Musik"
     ]
    }
   },
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "1",
    "_score": 1,
    "_Quelle": {
     "Vorname": "John",
     "Nachname": "Smith",
     "Alter": 25,
     "about": "Ich liebe es, klettern zu gehen",
     "Interessen": [
      "Sport",
      "Musik"
     ]
    }
   },
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "3",
    "_score": 1,
    "_Quelle": {
     "Vorname": "Douglas",
     "Nachname": "Tanne",
     "Alter": 35,
     "about": "Ich baue gerne Schränke",
     "Interessen": [
      "Forstwirtschaft"
     ]
    }
   }
  ]
 }
}

Ergebnisse durch Fuzzy-Matching von Namen erhalten

GET /megacorp/employee/_search?q=Nachname:Smith

Widerrufsfolgen:

{
 "nahm": 414,
 "timed_out": falsch,
 "_Scherben": {
  "insgesamt": 5,
  "erfolgreich": 5,
  "übersprungen": 0,
  "fehlgeschlagen": 0
 },
 "Treffer": {
  "insgesamt": 2,
  "max_score": 0,2876821,
  "Treffer": [
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "2",
    "_score": 0,2876821,
    "_Quelle": {
     "Vorname": "Jane",
     "Nachname": "Smith",
     "Alter": 32,
     "about": "Ich sammle gerne Rockalben",
     "Interessen": [
      "Musik"
     ]
    }
   },
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "1",
    "_score": 0,2876821,
    "_Quelle": {
     "Vorname": "John",
     "Nachname": "Smith",
     "Alter": 25,
     "about": "Ich liebe es, klettern zu gehen",
     "Interessen": [
      "Sport",
      "Musik"
     ]
    }
   }
  ]
 }
}

7. Suche mit Abfrageausdrücken

Eine domänenspezifische Sprache (DSL), die die Verwendung einer JSON-Anfrage spezifiziert

GET /megacorp/employee/_search
{
  "Abfrage" : {
    "übereinstimmen" : {
      "Nachname" : "Smith"
    }
  }
}

Widerrufsfolgen:

{
 "nahm": 7,
 "timed_out": falsch,
 "_Scherben": {
  "insgesamt": 5,
  "erfolgreich": 5,
  "übersprungen": 0,
  "fehlgeschlagen": 0
 },
 "Treffer": {
  "insgesamt": 2,
  "max_score": 0,2876821,
  "Treffer": [
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "2",
    "_score": 0,2876821,
    "_Quelle": {
     "Vorname": "Jane",
     "Nachname": "Smith",
     "Alter": 32,
     "about": "Ich sammle gerne Rockalben",
     "Interessen": [
      "Musik"
     ]
    }
   },
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "1",
    "_score": 0,2876821,
    "_Quelle": {
     "Vorname": "John",
     "Nachname": "Smith",
     "Alter": 25,
     "about": "Ich liebe es, klettern zu gehen",
     "Interessen": [
      "Sport",
      "Musik"
     ]
    }
   }
  ]
 }
}

8. Komplexere Suchen

Suchen Sie nach Mitarbeitern mit dem Nachnamen Smith, aber dieses Mal möchten wir nur diejenigen, die älter als 30 sind. Dazu verwenden wir den Filter „Filter“, der eine effiziente Ausführung einer strukturierten Abfrage ermöglicht.

GET /megacorp/employee/_search
{
  "Abfrage" : {
    "bool": {
      "muss": {
        "übereinstimmen" : {
          "Nachname" : "Schmied" 
        }
      },
      "Filter": {
        "Reichweite" : {
          "Alter" : { "gt" : 30 } 
        }
      }
    }
  }
}

Der Bereichsfilter findet Dokumente mit einem Alter von über 30 Jahren, wobei gt für „größer als“ steht.

Widerrufsfolgen:

{
 "nahm": 44,
 "timed_out": falsch,
 "_Scherben": {
  "insgesamt": 5,
  "erfolgreich": 5,
  "übersprungen": 0,
  "fehlgeschlagen": 0
 },
 "Treffer": {
  "Gesamt": 1,
  "max_score": 0,2876821,
  "Treffer": [
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "2",
    "_score": 0,2876821,
    "_Quelle": {
     "Vorname": "Jane",
     "Nachname": "Smith",
     "Alter": 32,
     "about": "Ich sammle gerne Rockalben",
     "Interessen": [
      "Musik"
     ]
    }
   }
  ]
 }
}

9. Volltextsuche

Suche nach allen Mitarbeitern, die gerne klettern

GET /megacorp/employee/_search
{
  "Abfrage" : {
    "übereinstimmen" : {
      "über" : "Klettern"
    }
  }
}

Widerrufsfolgen:

{
 "nahm": 17,
 "timed_out": falsch,
 "_Scherben": {
  "insgesamt": 5,
  "erfolgreich": 5,
  "übersprungen": 0,
  "fehlgeschlagen": 0
 },
 "Treffer": {
  "insgesamt": 2,
  "max_score": 0,5753642,
  "Treffer": [
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "1",
    "_score": 0,5753642,
    "_Quelle": {
     "Vorname": "John",
     "Nachname": "Smith",
     "Alter": 25,
     "about": "Ich liebe es, klettern zu gehen",
     "Interessen": [
      "Sport",
      "Musik"
     ]
    }
   },
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "2",
    "_score": 0,2876821,
    "_Quelle": {
     "Vorname": "Jane",
     "Nachname": "Smith",
     "Alter": 32,
     "about": "Ich sammle gerne Rockalben",
     "Interessen": [
      "Musik"
     ]
    }
   }
  ]
 }
}

10. Volltextsuche

Das Auffinden einzelner Wörter in einem Attribut ist kein Problem, manchmal möchten Sie jedoch eine genaue Abfolge von Wörtern oder Ausdrücken abgleichen. Wir möchten beispielsweise eine Abfrage ausführen, die nur Mitarbeiterdatensätze abgleicht, die sowohl „Rock“ als auch „Climbing“ unmittelbar nebeneinander in der Phrase „Rock Climbing“ enthalten.

GET /megacorp/employee/_search
{
  "Abfrage" : {
    "Übereinstimmungsphrase" : {
      "über" : "Klettern"
    }
  }
}

Widerrufsfolgen:

{
 "nahm": 142,
 "timed_out": falsch,
 "_Scherben": {
  "insgesamt": 5,
  "erfolgreich": 5,
  "übersprungen": 0,
  "fehlgeschlagen": 0
 },
 "Treffer": {
  "Gesamt": 1,
  "max_score": 0,5753642,
  "Treffer": [
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "1",
    "_score": 0,5753642,
    "_Quelle": {
     "Vorname": "John",
     "Nachname": "Smith",
     "Alter": 25,
     "about": "Ich liebe es, klettern zu gehen",
     "Interessen": [
      "Sport",
      "Musik"
     ]
    }
   }
  ]
 }
}

11. Suche markieren

Viele Anwendungen ziehen es vor, in jedem Suchergebnis einen Textausschnitt hervorzuheben, um dem Benutzer mitzuteilen, warum das Dokument mit der Abfrage übereinstimmt. Außerdem ist es einfach, die hervorgehobenen Snippets in Elasticsearch abzurufen.

Parameter hinzufügen: Hervorheben

GET /megacorp/employee/_search
{
  "Abfrage" : {
    "Übereinstimmungsphrase" : {
      "über" : "Klettern"
    }
  },
  "Hervorhebung": {
    "Felder" : {
      "um" : {}
    }
  }
}

Ergebnis zurückgeben:

{
 "nahm": 250,
 "timed_out": falsch,
 "_Scherben": {
  "insgesamt": 5,
  "erfolgreich": 5,
  "übersprungen": 0,
  "fehlgeschlagen": 0
 },
 "Treffer": {
  "Gesamt": 1,
  "max_score": 0,5753642,
  "Treffer": [
   {
    "_index": "Megakonzern",
    "_type": "Mitarbeiter",
    "_id": "1",
    "_score": 0,5753642,
    "_Quelle": {
     "Vorname": "John",
     "Nachname": "Smith",
     "Alter": 25,
     "about": "Ich liebe es, klettern zu gehen",
     "Interessen": [
      "Sport",
      "Musik"
     ]
    },
    "Hervorhebung": {
     "um": [
      „Ich liebe es, klettern zu gehen“
     ]
    }
   }
  ]
 }
}

Das Highlight-Modul ist das Highlight-Attribut

12. Analyse

Elasticsearch verfügt über eine Funktion namens „Aggregationen“, mit der wir auf Grundlage der Daten einige anspruchsvolle Analyseergebnisse generieren können. Die Aggregation ähnelt GROUP BY in SQL, ist jedoch leistungsfähiger.

So können Sie beispielsweise die beliebtesten Hobbys der Mitarbeiter herausfinden:

GET /megacorp/employee/_search
{
 "aggs": {
  "alle_interessen": {
   "Begriffe": { "Feld": "Interessen" }
  }
 }
}

Widerrufsfolgen:

{
  ...
  "Treffer": { ... },
  "Aggregationen": {
   "alle_interessen": {
     "Eimer": [
      {
        "Schlüssel": "Musik",
        "doc_count": 2
      },
      {
        "Schlüssel": "Forstwirtschaft",
        "Dokumentenanzahl": 1
      },
      {
        "Schlüssel": "Sport",
        "Dokumentenanzahl": 1
      }
     ]
   }
  }
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung zur Installation von elasticsearch5.0.x auf der virtuellen CentOS7-Maschine - Installation

<<:  So konfigurieren Sie mysql5.6 zur Unterstützung von IPV6-Verbindungen in einer Linux-Umgebung

>>:  So verwenden Sie das JavaScript-Strategiemuster zum Validieren von Formularen

Artikel empfehlen

SQL zur Implementierung der Wiederherstellung einer Zeitreihenversetzung

Inhaltsverzeichnis 1. Anforderungsbeschreibung 2....

Die vollständige Liste der MIME-Typen

Was ist ein MIME-TYP? 1. Zunächst müssen wir vers...

JavaScript generiert dynamisch eine Tabelle mit Zeilenlöschfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung der Top-Befehlsausgabe in Linux

Vorwort Ich glaube, jeder hat den Befehl top unte...

Was Sie über Responsive Design wissen müssen

Responsive Design bedeutet, während des Website-E...

Grundlegende Anwendungsmethoden für eingebettete und externe JavaScript-Links

Inhaltsverzeichnis Grundlegende Anwendung eingebe...

Webdesign-Zusammenfassung

<br />Von der Geburt meiner ersten persönlic...

So zeichnen Sie eine Schaltfläche in XAML als Kreis neu

Beim Verwenden des XAML-Layouts müssen manchmal ei...

React-Konfiguration px-Konvertierung rem-Methode

Installieren Sie zugehörige Abhängigkeiten npm ic...

Docker-Bereitstellung von Kafka und Spring Kafka-Implementierung

In diesem Artikel wird hauptsächlich die Bereitst...