ElasticSearch Hello World Beispiel
ElasticSearch ist eine Open-Source-REST-basierte Echtzeit-Such- und Analyse-Engine für Unternehmen. Die Kernsuchfunktion basiert auf Apache Lucene, unterstützt jedoch viele andere Funktionen.
Es ist in Java-Sprache geschrieben. Es unterstützt das Speichern, Indizieren, Suchen und Analysieren von Daten in Echtzeit. Wie MongoDB ist auch ElasticSearch ein dokumentbasierter NoSQL-Datenspeicher.
Note
ElasticSearch-Website:www.elastic.co. Die neueste Version von ElasticSearch ist 5.2.1, die am 14. Februar 2017 veröffentlicht wurde.
ElasticSearch-Funktionen: -
-
Ein Open-Source
-
Unterstützt die einfache und leistungsstarke Volltextsuche
-
Unterstützt REST-basierte API (JSON über HTTP)
-
Unterstützt Echtzeitsuche und -analyse
-
Per Definition verteilt
-
Unterstützt die Mandantenfähigkeitsfunktion
-
Unterstützt Cloud- und Big Data-Umgebungen
-
Unterstützt plattformübergreifend
-
Denormalisierter NoSQL-Datenspeicher
Vorteile oder Nutzen von ElasticSearch: -
-
Ein Open-Source
-
Leichtgewicht mit REST API
-
Sehr gut verfügbar. Einfach und hoch skalierbar
-
Unterstützt das Zwischenspeichern von Daten
-
Schema frei
-
Schnelle Suchleistung
-
Unterstützt sowohl strukturierte als auch UN-strukturierte Daten
-
Unterstützt verteilte Architektur, Sharding, Replikation, Clustering und Multi-Node-Architektur
-
Unterstützt Massenoperationen
-
Erstellen Sie Diagramme und Dashboards innerhalb kürzester Zeit
Nachteile oder Einschränkungen von ElasticSearch: -
-
Unterstützt KEINE MapReduce-Operationen
-
Nicht nützlich als primärer Datenspeicher
-
Kein ACID-kompatibler Datenspeicher
-
Unterstützt keine Transaktionen und verteilten Transaktionen
-
Verfügt NICHT über eine integrierte Authentifizierungs- oder Autorisierungsfunktion
Beliebte Kunden, die ElasticSearch verwenden: -
-
Github.com, Quora.com, Stackoverflow.com
-
eBay, DELL, Cisco, Mozilla, Wikimedia
-
Netflix, Symatics, Facebook
-
UK HMRC (HM Revenue & Customs)
Zum Beispiel verwendet Github.com ElasticSearch, um Dateien, Verlauf, Ticketnummern usw. zu durchsuchen. Die meisten Unternehmen verwenden ELK-Stack, um ihre Protokolle zu verwalten und ihre Systeme zu überwachen. ELK steht für ElasticSearch Logstash und Kibana.
Note
Weitere Anwendungsfälle eines Kunden finden Sie unterhttps://www.elastic.co/use-cases
1. Installieren Sie ElasticSearch lokal
Note
Wie wir wissen, ist ElasticSearch in Java geschrieben. Wir sollten also Java / JRE in unserem Systempfad haben, um es zu verwenden. Bitte installieren und richten Sie Java Environment ordnungsgemäß ein.
Befolgen Sie diese Anweisungen, um ElasticSearch auf Ihrem lokalen Dateisystem zu installieren.
1.1 Download ElasticSearch from https://www.elastic.co/downloads/elasticsearch
1.2 Windows
-
Laden Sie die Zip-Datei herunter und extrahieren Sie sie in das lokale Dateisystem: elasticsearch-5.2.1.zip
-
Extrahierte Zip-Datei nach F: \ elasticsearch-5.2.1
-
Umgebungsvariable festlegen
PATH = F:\elasticsearch-5.2.1\bin
Starten Sie ElasticSearch
F:/>elasticsearch.bat
Greifen Sie mithttp://localhost:9200 über den Browser auf die ElasticSearch zu. Wir können Strg + C verwenden, um die Eingabeaufforderung von ElasticSearch an der CMD zu stoppen.
1.3 Ubuntu Linux: Install with tar file
-
Laden Sie die Tar-Datei herunter und extrahieren Sie sie in das lokale Dateisystem
tar -xvf elasticsearch-5.2.1.tar.gz
Starten Sie ElasticSearch
$ ./elasticsearch
Greifen Sie mithttp://localhost:9200 über den Browser auf die ElasticSearch zu
1.4 Ubuntu Linux: Install with commands
-
Führen Sie den folgenden Befehl aus, um ElasticSearch herunterzuladen
$ sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.1.deb
Es lädt die ElasticSearch DEB-Datei herunter: elasticsearch-5.2.1.deb
Führen Sie den folgenden Befehl dpkg aus, um ElasticSearch zu installieren
$ sudo dpkg -i elasticsearch-5.2.1.deb
Standardmäßig wird ElasticSearch unter "/ usr / share / elasticsearch" installiert.
Starten Sie ElasticSearch
$ ./elasticsearch
Greifen Sie mithttp://localhost:9200 über den Browser auf die ElasticSearch zu
Note
Die Standardportnummer von ElasticSearch ist9200
. Bei Bedarf können wir diese Portnummer ändern.
1.5 After ElasticSearch is started, access the default URL, we will get the following default Response
Browser:http://localhost:9200
{ "name" : "rBvi0Hs", "cluster_name" : "elasticsearch", "cluster_uuid" : "kOQQ_nqfTW-b4vQ00XSvdg", "version" : { "number" : "5.2.1", "build_hash" : "db0d481", "build_date" : "2017-02-09T22:05:32.386Z", "build_snapshot" : false, "lucene_version" : "6.4.1" }, "tagline" : "You Know, for Search" }
Note
Sie finden den ElasticSearch-Quellcode unterhttps://github.com/elastic/elasticsearch
2. Grundlagen der ElasticSearch-REST-API-URL
Die ElasticSearch-REST-API-URL sollte dem folgenden Format entsprechen.
Here
-
Server bedeutet einen beliebigen Servernamen oder Hostnamen wie "myserver". Manchmal verwenden wir Knoten + Portnummer wie "myhost: 9999".
-
Der Index muss in Kleinbuchstaben angegeben werden, da sonst eine Ausnahme ausgelöst wird.
-
Es wird empfohlen, Type auch in Kleinbuchstaben zu verwenden.
In den nächsten Abschnitten werden wir anhand einiger Beispiele mehr über diese Verwendung und Ausnahme der REST-API diskutieren.
3. ElasticSearch-Terminologie
Wir werden einige wichtige ElasticSearch-Terminologie diskutieren:Index
,Type
,Document
,Key
,Value
usw.
3.1 What is an Index in ElasticSearch?
In ElasticSearch ist ein Index eine Sammlung von Dokumenten. Zum Beispiel ist "Buchhandlung" ein Dokument. Index wird zum Indizieren, Suchen, Aktualisieren und Löschen von Dokumenten verwendet. Es muss in Kleinbuchstaben geschrieben werden.
Ein Index ähnelt der Datenbank in Relation Database World.
3.2 What is a Type in ElasticSearch?
In ElasticSearch ist ein Typ eine Kategorie ähnlicher Dokumente. Das heißt, wir können eine Reihe ähnlicher Dokumente zu einem Typ zusammenfassen. Wie wir in der Praxis wissen, enthält eine „Buchhandlung“ verschiedene Arten von Gegenständen: eine Sammlung von „Büchern“, eine Sammlung von Stiften, Bleistiften, CDs usw. Auf die gleiche Weise kann das Dokument „Buchhandlung“ (eine Art von Index) eine Sammlung von Typen enthalten: Bücher, Stifte, CDs usw.
Ein Typ ähnelt der Tabelle in Relation Database World.
3.3 What is a Document in ElasticSearch?
In ElasticSearch ist ein Dokument eine Instanz eines Typs. Es enthält Daten mit Schlüssel- und Wertmessen. Zum Beispiel ist "Titel": "Funktionale Programmierung in Java" ein Schlüssel: Wertmesse eines Dokuments vom Typ "Bücher". Jedes Dokument hat eine ID.
Ein Dokument ähnelt einer Zeile in einer Tabelle in Relation Database World. Schlüssel ist Spaltenname und Wert ist Spaltenwert.
4. Grundlagen der ElasticSearch-Befehle
Wie wir wissen, unterstützt ElasticSearch die REST-basierte API (JSON Over HTTP Protocol), um CRUD-Vorgänge (Create Read Update Delete) zu unterstützen. Es verwendet HTTP-Methoden, um seine Operationen auszuführen.
HTTP Request Mothod | Verwendungszweck |
---|---|
GET |
Abrufen oder Auswählen oder Lesen von Daten aus ElasticSearch |
POST |
So erstellen oder aktualisieren Sie Daten für ElasticSearch |
PUT |
So erstellen oder aktualisieren Sie Daten für ElasticSearch |
LÖSCHEN |
Zum Löschen oder Entfernen vorhandener Daten aus ElasticSearch |
Note
Zum Testen von ElasticSearch-Vorgängen können beliebige REST-Clients wie POSTMAN, Fiddler, CURL-Befehl, Sense usw. verwendet werden. Ich werdeGoogle Chrome
POSTMAN verwenden, um die ElasticSearch-REST-APIs zu untersuchen. You can install POSTMAN or Sense as Chrome Extensions.
5. ElasticSearch CRUD-Operationen
Lassen Sie uns mithilfe von ElasticSearch eine Suchfunktion für die Website Mkyong.com entwickeln, um nach Beitragsdetails, Autorendetails usw. zu suchen.
5.1 CREATE Operation Example
So fügen Sie ein neues Dokument mit/techfou/posts/1001
und den folgenden Anforderungsdaten ein:
{ "title": "Java 8 Optional In Depth", "category":"Java", "published_date":"23-FEB-2017", "author":"Rambabu Posa" }
Hier ist 1001 die Dokument-ID. Es wird verwendet, um es eindeutig zu identifizieren.
Beschreibung:-
-
Um ein neues Dokument zu erstellen, verwenden wir eine HTTP-POST-Anforderungsmethode.
-
Unser Knoten: Portnummer:http://localhost:9200
-
Indexname: techfou
-
Typname: Beiträge
-
Als Anfragetexttyp als JSON oder als Anforderungsheader hinzufügen: "Inhaltstyp": "application / json"
-
Klicken Sie auf die Schaltfläche "SENDEN", um zur Antwort zu gelangen.
-
Wir können den folgenden Schlüssel beobachten: Wertepaare in Antwortdaten.
"_index":"example" "_type":"posts" "result":"created" "created":true
Wir können die folgenden Protokolle in der CMD-Eingabeaufforderung beobachten.
[2017-02-26T21:10:33,941][INFO ][o.e.c.m.MetaDataCreateIndexService] [aH4GiIP] [example] creating index, cause [auto(index api)], templates [], shards [5]/[1], mappings [] [2017-02-26T21:10:35,790][INFO ][o.e.c.m.MetaDataMappingService] [aH4GiIP] [example/KJsGZgF-Try0k4OHWAgARQ] create_mapping [posts]
Bitte fügen Sie die folgenden Dokumente auf die gleiche Weise ein:
"/example/posts/1002" { "title": "Elastic Search Basics", "category":"ElasticSearch", "published_date":"03-MAR-2017", "author":"Rambabu Posa" } "/example/posts/1003" { "title": "Spring + Spring Data + ElasticSearch", "category":"Spring", "published_date":"11-MAR-2017", "author":"Rambabu Posa" } "/example/posts/1004" { "title": "Spring + Spring Data + ElasticSearch", "category":"Spring Boot", "published_date":"23-MAR-2017", "author":"Rambabu Posa" }
5.2 READ Operation Example
Um Daten aus ElasticSearch zu lesen, abzufragen oder auszuwählen, sollten Sie "_search" am Ende der REAT-API-URL verwenden.
Beschreibung:-
-
Sie können "_search" in der URL beobachten.
-
Die Antwort zeigt: "total": 4 (Insgesamt 4 Datensätze mit diesem Index und Typ gefunden.)
5.3 READ Operation With Query Parameters Example
Wir können Abfrageparameter mithilfe der Syntax "? q =:" in Query verwenden, um die Datensätze zu filtern.
Beschreibung:-
-
Wir können den folgenden Schlüssel beobachten: Wertepaare in Antwortdaten. Es zeigt insgesamt einen Datensatz an, der bei dieser Suche gefunden wurde.
"total":"1" "_id":"1002"
5.4 UPDATE Operation Example
Möchten Sie vorhandene Dokumentdaten wie folgt aktualisieren:
Beschreibung:-
-
Wir können den folgenden Schlüssel beobachten: Wertepaare in Antwortdaten. Es wird mitgeteilt, dass das Dokument aktualisiert, aber nicht erstellt wurde.
"result":"updated" "created":"false"
Überprüfen Sie das gleiche Dokument
5.5 DELETE Operation Example
Möchten Sie ein Dokument entfernen, dessen_id = 1004
Beschreibung:-
-
Wir können den folgenden Schlüssel beobachten: Wertepaare in Antwortdaten. Es zeigt an, dass das Dokument erfolgreich gelöscht wurde.
"result":"deleted" "successful":"1"
6. Der Index muss in Kleinbuchstaben angegeben werden
Wie bereits erwähnt, muss der Index in Kleinbuchstaben angegeben werden. Andernfalls wird ein Fehler ausgegeben, wie unten gezeigt:
Da wir Index: "Mkyong" NICHT in Kleinbuchstaben verwenden, wird eine sehr aussagekräftige Fehlermeldung ausgegeben: "Ungültiger Indexname [Mkyong] muss in Kleinbuchstaben geschrieben werden".
Note
Der Typ kann in Großbuchstaben angegeben werden, wird jedoch nicht empfohlen.