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    

Artikel empfehlen

CSS zur Erzielung einer kompatiblen Textausrichtung in verschiedenen Browsern

Beim Front-End-Layout des Formulars müssen wir hä...

Der einfachste Weg zum Debuggen gespeicherter Prozeduren in MySQL

Ein Kollege hat mir einmal gesagt, ich solle eine...

TinyEditor ist ein einfacher und benutzerfreundlicher HTML-WYSIWYG-Editor

Vor einigen Tagen habe ich Ihnen einen inländisch...

nuxt.js Konfiguration mehrerer Umgebungsvariablen

Inhaltsverzeichnis 1. Einleitung 2. Szenario 3. S...

So konfigurieren Sie einfach mehrere Server in Nginx

1: Ich werde nicht näher auf die Installation von...

Über gutes Design

<br />Auf zehntausend Personen, die die Frag...

So richten Sie ein Bereitstellungsprojekt unter einem Linux-System ein

1. Ändern Sie die Firewall-Einstellungen und öffn...

JavaScript-Lösung für die Setinterval-Verzögerung um eine Sekunde

Bei Verwendung von setinterval wird festgestellt,...

Navicat für MySQL 11 Registrierungscode\Aktivierungscode-Zusammenfassung

Lesetipp: Navicat12.1 Serie Cracking und Aktivier...

5 häufig verwendete Objekte in JavaScript

Inhaltsverzeichnis 1. JavaScript-Objekte 1).Array...

Was sind MySQL-Dirty-Pages?

Inhaltsverzeichnis Schmutzige Seiten (Speichersei...

So installieren Sie Nginx schnell unter Linux

Inhaltsverzeichnis Was ist nginx 1. Laden Sie die...