ElasticSearch Tutorial: Einführung in Elasticsearch
Wenn man fragt "Was ist Elasticsearch?" einige Personen würden sagen "ein Index," "eine Suchmaschine," "eine Analysedatenbank," "eine Big-Data-Lösung," "es ist schnell und skalierbar," oder "es ist wie Google."
Diese Antworten können Ihnen entweder näher zur Lösung verhelfen oder Sie weiter verwirren, je nach Ihrem Kenntnisstand mit dieser Technologie. Allerdings sind all diese Antworten korrekt, was ein Teil der Anziehungskraft von Elasticsearch ist.
In diesem Artikel werden wir einen genaueren Blick darauf werfen, was Elastic Search ist, wie es funktioniert, wo es verwendet wird, welche Vorteile es bietet und einige grundlegende Definitionen dazu.
Was ist Elasticsearch?
Elasticsearch ist eine dezentrale, kostenlose und offene Such- und Analyseplattform, die alle Arten von Daten unterstützen kann, einschließlich textueller, numerischer, räumlicher Daten, strukturierter und unstrukturierter Daten.
Die Geschwindigkeit und Skalierbarkeit von Elasticsearch sowie seine Fähigkeit, eine Vielzahl von Inhaltstypen zu indizieren, machen es für eine Vielzahl von Anwendungen geeignet:
- Anwendungssuche
- Website-Suche
- Infrastrukturmetriken und Containerüberwachung
- Unternehmenssuche
- Sicherheitsanalytik
- Protokollierung und Protokollanalyse
- Sicherheitsanalytik
- Protokollierung und Protokollanalyse
- Geschäftsanalyse
Lassen Sie uns in Elasticsearch eintauchen, das eine Backend-Datenbankoption für Zenarmor (Sensei) ist.
Was macht Elasticsearch?
Wir haben die Definition von Elasticsearch verstanden, lass uns lernen, was es tatsächlich tut.
Elasticsearch hilft Ihnen, große Datensätze nahezu in Echtzeit zu speichern, zu durchsuchen und zu analysieren und in Millisekunden Ergebnisse zu generieren. Es sucht nicht in großen Textdateien, sondern in Indizes.
Um zu verstehen, was Elasticsearch tut, müssen wir den Arbeitsmechanismus vollständig verstehen.
Wie funktioniert Elasticsearch?
Elasticsearch erfasst und verwaltet dokumentenorientierte und halbstrukturierte Dateien.
Die primäre Datenstruktur von Elasticsearch ist ein invertierter Index, der über die Apache Lucene APIs verwaltet wird. Ein invertierter Index ist eine Zuordnung jedes spezifischen „Wortes“ (Tokens) zu der Liste der Dokumente (Standorte), die dieses Wort enthalten, wodurch Benutzer Dokumente mit bestimmten Schlüsselwörtern leicht finden können. Indexdaten sind in einer oder mehreren Partitionen enthalten, die auch als Shards bezeichnet werden. Elasticsearch verteilt und weist Shards auch automatisch den Cluster-Knoten zu.
Um zu verstehen, wie Elasticsearch die Dokumente indiziert, können Sie sich dieses Beispiel ansehen.
Angenommen, wir haben drei einfache Dokumente wie diese.
Dokument 1: "Ein Bild sagt mehr als tausend Worte." Dokument 2: "Kein Mensch ist eine Insel." Dokument 2: "Ehrlichkeit ist die beste Politik."
Nach einigen grundlegenden Textverarbeitungen (Kleinbuchstaben, Entfernen von Satzzeichen und Aufteilen von Wörtern) können wir eine solche Tabelle erhalten.
Abbildung 1. Wie Elasticsearch Dokumente indiziert
Der umgekehrte Index verknüpft Begriffe mit Dokumenten (und manchmal Stellen innerhalb von Texten), die den Ausdruck enthalten. Wir können einen Begriff und seine Vorkommen in der Posting-Struktur schnell entdecken, da die Begriffe im Wörterbuch geordnet sind.
Wir haben die Definition und Funktionsweise von Elasticsearch betrachtet, jetzt wollen wir erkunden, wofür es in realen Szenarien verwendet wird.
Wofür wird Elasticsearch verwendet?
Aufgrund der anpassbaren Skalierbarkeit und Geschwindigkeit von Elasticsearch gibt es viele verschiedene Arten von Anwendungsbereichen zur Verarbeitung von Big Data. Wichtige Anwendungsbereiche können aufgelistet werden als:
-
Textsuche: Wie der Name schon sagt, die Volltextabfragefähigkeit von Elasticsearch. Die Volltextsuche wendet linguistische Suche auf Dokumente an, die aus mehreren Wörtern bestehen (E-Mail-Inhalte, Word-Dokumente usw.).
Elasticsearch ist eine leistungsstarke und plattformunabhängige Suchmaschine, die Volltextsuchen über Millionen von Dokumenten in Echtzeit durchführen kann.
-
Produktsuche: E-Commerce-Websites sind die zweithäufigste Nutzung von Suchmaschinen, hinter Web-Suchplattformen. Es ist für den E-Commerce von entscheidender Bedeutung, insbesondere im Hinblick auf mögliche Verkäufe, dass die relevantesten Produkte an oberster Stelle der Liste angezeigt werden. Elasticsearch hilft, ein Problem bei der Produktsuche im E-Commerce mit der Effizienz und Relevanz seiner Suchfunktion zu lösen.
-
Datenaggregation: Einer der größten Verwendungszwecke von Elasticsearch ist die Datenaggregation. Daten werden durch eine Aggregation als Metriken, Prozentsätze oder andere Analysen zusammengefasst.
Aggregation ermöglicht es Ihnen, Daten ganzheitlich und zusammengefasst zu betrachten.
Metrik
:Metrik
-Aggregationen, die Metriken aus Feldwerten berechnen, wie z.B. eine Zahl oder einen Durchschnitt. Metriken sind einfache mathematische Operationen wie min, max, Durchschnitt, Gesamt, Perzentile und so weiter. Metriken entnehmen Werte aus Dokumenten, um sie in Berechnungen zu verwenden.Bucket
:Bucket
-Aggregationen teilen Datensätze in Buckets (auch als Bins bekannt) basierend auf Feldwerten, Bereichen oder anderen Parametern auf.Ein Kriterium wird durch Bucketing-Aggregationen definiert. Dokumente, die dieses Kriterium erfüllen, werden dem Bucket hinzugefügt. Zum Beispiel Aufgaben-Daten in die Kategorien „Backlog“, „Todo“, „In Bearbeitung“, „Q&A“, „Fertig“ einordnen.pipeline
: Aggregationen in einerPipeline
, die Daten aus anderen Aggregationen anstelle von Dokumenten oder Feldern verwenden.
-
JSON-Dokumentenspeicherung: Elasticsearch speichert eine Kopie aller JSON-Dokumente, die Sie zum Indizieren haben, standardmäßig in einem Feld namens
_source
. Jede Abfrage, die dem Dokument entspricht, gibt eine Kopie der gespeicherten Daten zurück. Sie können Ihre Daten in Elasticsearch speichern und auch abrufen. Es dient auch als Dokumentenspeichersystem. -
Geo-Suche: Eine der herausragenden Funktionen von Elasticsearch ist die Fähigkeit, räumliche Daten abzufragen. Es ermöglicht Abfragen sowohl in Punkt (Breiten- und Längengrad) als auch in geospatialen Formen wie Linien, Kreisen, Polygonen, Multi-Polygonen usw.Die Geo_point- und Geo_shape-Funktionen helfen Benutzern, ihre räumlichen Daten zu verwalten und zu visualisieren. Viele Unternehmen haben eine große Menge an geospatialen Daten (wie Uber) und verwenden Elasticsearch, um Tausende von Abfragen pro Sekunde in ihren Systemen zu verarbeiten.
-
Auto-Vervollständigung: Wenn Sie etwas googeln, sehen Sie möglicherweise „Meinten Sie …?“ Google schlägt Ihnen etwas basierend auf Ihrem Suchbegriff vor.Die Vorschlagsfunktion von Elasticsearch ermöglicht es Ihnen, relevante Ergebnisse basierend auf den von Ihnen gesuchten Schlüsselwörtern zu erhalten. Begriffs-, Phrasen- oder Kontextsuggerierungen sind die Hauptfunktionen des Elasticsearch-Suggestion-Systems.
Abbildung 2. Elasticsearch Auto-Vervollständigung
-
Auto-Vervollständigung: Die Auto-Complete-Funktion von Elasticsearch ermöglicht es den Benutzern, relevante Ergebnisse basierend auf ihren Suchbegriffen zu erhalten, während sie tippen. Die integrierte Funktionalität namens
Completion Suggester
hilft enorm bei den Auto-Vervollständigungsbedürfnissen.Öffnen Sie eine Google-Suche und beginnen Sie zu tippen, es wird Ihre Abfrage automatisch vervollständigen. Diese Funktion funktioniert in Elasticsearch auf die gleiche Weise.
Abbildung 3. Elasticsearch-Autovervollständigung
-
Analyse von Leistung und Metriken: Einer der größten Vorteile der Verwendung von Elasticsearch ist seine Analysefähigkeit. Aufgrund seiner Architektur kann es Milliarden von Dokumenten in kurzer Zeit analysieren.
In Elasticsearch ermöglichen die Kibana Metricbeat-Module das Sammeln und Auswerten von Metriken von Servern, Docker-Clustern, Kubernetes-Orchestrierungen sowie das Erkunden und Analysieren von Metriken im Prometheus-Stil oder Geräteleitungen.
Wie man Elasticsearch in Zenarmor verwendet?
Zenarmor ist eine rein softwarebasierte Sofort-Firewall, die nahezu überall eingesetzt werden kann.Obwohl Sie es auf Open-Source-Firewalls wie OPNsense und pfSense®-Software verwenden können, ist es auch für viele Linux-Umgebungen verfügbar.
Sie können detaillierte Informationen über die Zenarmor-Über-Seite abrufen.
Im Zenarmor-Umfeld Sie können Elasticsearch als Backend-Datenbank installieren und konfigurieren. Es ist auch möglich, Elastic für Reporting-Zwecke zu verwenden. Um eine entfernte Elasticsearch-Instanz für Zenarmor Reporting zu verwenden, müssen Sie die folgenden 3 Hauptschritte befolgen.
- Konfiguration der Microsoft Windows-Firewall
- Elasticsearch-Installation und -Konfiguration
- Kibana-Installation und -Konfiguration
Sie können mehr darüber erfahren, wie Sie Elasticsearch für Berichte in Zenarmor verwenden, im Sunny Valley Elasticsearch Guide.
Welche Unternehmen verwenden Elasticsearch?
Elasticsearch ist ein Technologie-Stack-Werkzeug, das in die Kategorie Search as a Service fällt. Elastic ermöglicht Suchlösungen für Tausende von Unternehmen weltweit, von Startups bis hin zu den Global 2000, um Dokumente zu finden, Infrastruktur zu überwachen, sich gegen Sicherheitsbedrohungen zu schützen und mehr.
Die Unternehmen, die Elasticsearch verwenden, sind unten aufgeführt:
- Microsoft
- Stack Overflow
- Uber
- Shopify
- Udemy
- Netflix
- Slack
Was sind die Vorteile von Elasticsearch?
Elasticsearch ist eine skalierbare, unternehmensgerechte, Open-Source-Suchmaschine, die in Echtzeit arbeitet und auf Apache Lucene basiert. Lassen Sie uns einige der wichtigsten Vorteile der Verwendung von ElasticSearch in Ihrem Unternehmen durchgehen:
- Schnelle Leistung: Mit Hilfe der invertierten Indexarchitektur ermöglicht es Elastic, das Suchwort selbst in sehr großen Datensätzen leicht zu finden.
- Mehrsprachig: Elasticsearch bietet mehrsprachige Unterstützung mit Hilfe des
ICU
-Plugins, das ein Elasticsearch-Plugin basierend auf der Lucene-Implementierung des Unicode-Textsegmentierungsstandards ist. - Skalierbarkeit: Elasticsearch ist darauf ausgelegt, skalierbar zu sein, und es kann problemlos auf jedem System oder in einem Netzwerk von Hunderten von Knoten laufen.Der Übergang von einem kleinen zu einem großflächigen Cluster ist fast vollständig nahtlos und unkompliziert.
- Auto-Vervollständigung und Instanzsuche: Auto-Suggest- und Auto-Complete-Algorithmen in Elasticsearch erleichtern Suchaufgaben. Term Suggester, Phrase Suggester, Completion Suggester, Context Suggester sind die Kernkomponenten seiner Autovervollständigungs- und Sofortsuchfunktion.
- Schema-frei: Einige Definitionen, wie Index, Klasse und Feldtyp, sind vor dem Indizierungsverfahren nicht erforderlich, und wenn ein Objekt später mit einem neuen Attribut indiziert wird, wird es sofort auf die Mapping-Definitionen angewendet. Elasticsearch ist schemalos, was sicherstellt, dass Dokumente durchsucht werden können, ohne ein Schema ausdrücklich anzugeben.
- Dokumentenorientiert (JSON): Das Dokumentenserialisierungsformat von Elasticsearch ist JavaScript Object Notation oder JSON. Die JSON-Serialisierung wird von vielen Programmiersprachen unterstützt und ist zum grundlegenden Format der NoSQL-Bewegung geworden. Es ist einfach, prägnant und schnell zu verstehen.
Was sind die grundlegenden Konzepte von Elasticsearch?
Nachdem wir gelernt haben, was Elasticsearch ist, wie es funktioniert und wofür es verwendet wird, lassen Sie uns kurz über einige der unverzichtbaren Begriffe der Elastic-Welt sprechen.
1- JVM (Java Virtual Machine)
Java hat eine Struktur, die auf einer virtuellen Maschine läuft. Infolgedessen müssen Java-virtuelle Maschinen auf einem Server installiert sein, um Java-Programme auszuführen. JWM ermöglicht das Ausführen von Java-Programmen auf bestimmten Servern.
2- Splitter
Shards hingegen sind die "Apache Lucene"-Anwendung selbst, die die Indizierung von Daten innerhalb der Knoten bereitstellt.
3- Index
Jeder Datensatz in ElasticSearch besteht aus JSON-Dokumenten. Elasticsearch-Indizes ist eine Sammlung von JSON-Dokumenten. Kurz gesagt, jeder Index ist eine Art Datenbank.
4- Segmente
Der Lucene-Index ist in Teile unterteilt, die kleinere Verzeichnisse sind. Ein Segment ist eine Teilmenge des Lucene-Index.
5- Kartierung
Mapping ist die Methode, um festzulegen, wie ein Dokument und die darin enthaltenen Felder gespeichert und indiziert werden. Jeder Index hat eine einzige Mapping-Form, die definiert, wie der Text indiziert wird.
6- Knoten
Jede einzelne Instanz (auf einem Elasticsearch installierten Rechner) wird als Knoten definiert.
7- Dokument
In Elasticsearch stellt ein Dokument eine grundlegende Informationseinheit dar, die indexiert werden kann.
8- Nachbildung
Elasticsearch sendet eine Kopie jeder Daten an andere Maschinen, um Datenverlust zu verhindern, falls eine der Maschinen ausfällt. Diese replizierten Maschinen oder Shards werden als Replikate definiert.
9- Cluster
Ein Cluster in Elasticsearch ist eine Gruppe von Knoten mit demselben Cluster-Namen, der durch das Attribut cluster.name definiert ist. Wenn Knoten einem Cluster beitreten oder ihn verlassen, reorganisiert sich der Cluster, um die Daten gleichmäßig über die verfügbaren Knoten zu verteilen.
10- Typ
In Elasticsearch repräsentiert ein Typ eine Klasse verwandter Dokumente und wird durch einen Namen wie Kunde oder Produkt identifiziert.
Ist Elasticsearch kostenlos?
Ja. Die kostenlosen und uneingeschränkten Funktionen von Elasticsearch sind entweder unter der SSPL oder der Elastic License verfügbar. Die Elastic-Lizenz bietet zusätzliche kostenlose Funktionen. Abonnierte Versionen haben Zugang zu Support sowie zu spezialisierten Funktionen wie Alarmierung und maschinellem Lernen.