1. Laden Sie das ElasticSearch 6.4.1-Installationspaket herunter von: 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 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 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:
|
<<: 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
Beim Front-End-Layout des Formulars müssen wir hä...
Ein Kollege hat mir einmal gesagt, ich solle eine...
Vor einigen Tagen habe ich Ihnen einen inländisch...
Inhaltsverzeichnis 1. Einleitung 2. Szenario 3. S...
1: Ich werde nicht näher auf die Installation von...
<br />Auf zehntausend Personen, die die Frag...
1. Ändern Sie die Firewall-Einstellungen und öffn...
Bei Verwendung von setinterval wird festgestellt,...
Bei der Installation von mha4mysql sind die Schri...
Lesetipp: Navicat12.1 Serie Cracking und Aktivier...
Inhaltsverzeichnis 1. JavaScript-Objekte 1).Array...
Inhaltsverzeichnis Schmutzige Seiten (Speichersei...
Der übergeordnete Knoten des übergeordneten Knoten...
Es gibt zwei Möglichkeiten, nodejs unter Linux zu...
Inhaltsverzeichnis Was ist nginx 1. Laden Sie die...