ElasticSearch Hello World Beispiel

ElasticSearch Hello World Beispiel

image

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

image

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

{
  "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.

image

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.

image

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.

image

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.

image

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:

image

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

image

5.5 DELETE Operation Example
Möchten Sie ein Dokument entfernen, dessen_id = 1004

image

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:

image

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.