Eine Idee hinter Elastic Stack und Elasticsearch

(10. April 2020) )

Eine kurze Einführung in Elasticsearch und ELK Stack. Warum was und wie.

ELK https : //aasconsultants.files.wordpress.com/2019/03/elk.png

Verlauf

Elastisch NV ist ein Unternehmen, das 2012 in Amsterdam gegründet wurde. Shay Banon war der Gründer von Elasticsearch. Seine erste Iteration hieß Compass. Der zweite war Elasticsearch (mit Apache Lucene unter der Haube). Er hat Elasticsearch als Open-Source-Version bereitgestellt, den IRC-Kanal #elasticsearch erstellt und darauf gewartet, dass Benutzer angezeigt werden. Die Resonanz war beeindruckend. Benutzer nahmen es natürlich und leicht. Die Adoption ging durch das Dach, eine Gemeinschaft begann sich zu bilden, und die Leute bemerkten es – nämlich Steven Schuurman, Uri Boness und Simon Willnauer. Gemeinsam gründeten sie eine Suchfirma.

Was ist Elastic Stack?

Elastic Stack wird auch als ELK-Stack bezeichnet. Grundsätzlich enthält es drei Open-Source-Projekte.

  1. Elastische Suche – Such- und Analyse-Engine .
  2. Logstash – Datenverarbeitungspipeline.
  3. Kibana – Dashboard zur Visualisierung von Daten.

Alle diese drei haben ihre eigene Bedeutung und durch Kämmen dieser drei Sie Sie erhalten eine Analyse und Analyse Ihrer Daten.

Warum wird sie benötigt?

Laut Umfrage generiert Facebook täglich 4 Petabyte-Daten, dh 40 Millionen GB . Die Daten, jetzt ist es eine Welt der Daten. Wir brauchen also ein System, das unsere Daten analysiert.

Warten Sie !! Was bedeutet das? Analysieren.

Es sind zwei Begriffe zu verstehen.

  1. Analyse – Im Analyseteil erhalten Sie Ergebnisse aus den vergangenen Daten oder den vorhandenen Daten.
  2. Analytics – Wenn Sie Benutzeranforderungen vorhersagen möchten, möchten Sie eine grafische Visualisierung für eine bessere Geschäftsklarheit und auch Datenmuster verstehen.

Diese beiden wichtigsten Tools für jedes Geschäft. Sie können dies durch Ihre -Daten erreichen. Mithilfe dieser beiden Funktionen können Sie Ihr Geschäft ausbauen und geschäftliche Erkenntnisse gewinnen.

Nun, wie gehts? Da es keine leichte Aufgabe ist, diese großen Datenmengen in kürzerer Zeit zu analysieren.

Herausforderungen und Lösungen.

Was passiert in Bei sehr großen Unternehmen erhalten Sie Daten von verschiedenen Orten in verschiedenen Formaten. Es kann JSON oder XML sein. Wir brauchen also einen Mechanismus, um ganze Daten an einem Ort und auch in einem Format abzurufen. Deshalb verwenden wir Logstash .

Wenn wir jetzt Daten erhalten, müssen wir Daten anordnen eine systematische Reihenfolge, damit wir die Dinge sehr leicht bewerten können. Außerdem möchten wir die Daten analysieren. In diesem Fall müssen Sie die Daten zunächst sehr schnell verarbeiten. Dafür haben wir Elasticsearch. Elasticsearch wurde in Java entwickelt und als Open Source unter den Bedingungen der Apache-Lizenz .

Nachdem wir dies abgeschlossen haben, benötigen wir eine Visualisierungsplattform, auf der wir unsere Datenanalyse zeigen können. Dort kommt Kibana ins Bild. So funktionierte der gesamte Elastic-Stack. Zum besseren Business Insights .

Prozess https://hackernoon.com/hn-images/1*Tvmj3XsqH4hJLvXnfm6sZQ.png

Einrichten von Elasticsearch, Logstash und Kibana

Laden Sie zunächst die drei Open-Source-Software von ihren jeweiligen Links herunter [ elasticsearch ], [ logstash ] und [ kibana ]. Entpacken Sie die Dateien und legen Sie alle drei in den Projektordner.

Beginnen wir.

Schritt 1 – Richten Sie Kibana und Elasticsearch auf dem lokalen System ein. Wir führen Kibana mit dem folgenden Befehl im bin-Ordner von Kibana aus.

bin\kibana

Ebenso ist Elasticsearch wie folgt eingerichtet:

bin\elasticsearch

Jetzt können wir in den beiden separaten Terminals sehen, dass beide Module ausgeführt werden.Um zu überprüfen, ob die Dienste ausgeführt werden, öffnen Sie localhost: 5621 für Kibana und localhost: 9600 für Elasticsearch.

Hier sind wir mit der Einrichtung für den elastischen Stapel fertig. Gehen Sie nun zu localhost: 5621 und öffnen Sie die Entwicklungstools hier in der Konsole. Hier können Sie Elasticsearch-Abfragen schreiben.

Kibana Console

Da wir diesmal mehr über Elasticsearch sprechen werden. Jetzt werden wir sehen, wie genau Elasticsearch funktioniert.

Elastische Suche

Arbeiten der elastischen Suche

Vor jeder Operation müssen wir unsere Daten indizieren. Nach der Indizierung in Elasticsearch können Benutzer komplexe Abfragen für ihre Daten ausführen und mithilfe von Aggregationen komplexe Zusammenfassungen ihrer Daten abrufen. Elasticsearch speichert Daten als JSON-Dokumente und verwendet Datastrucre als invertierter Index , der eine sehr schnelle Volltextsuche ermöglicht . Ein invertierter Index listet jedes eindeutige Wort auf, das in einem Dokument vorkommt, und identifiziert alle Dokumente, in denen jedes Wort vorkommt.

Zum besseren Verständnis werden wir Teilen Sie Elasticsearch in mehrere Themen auf.

  1. Verwalten von Dokumenten
  2. Zuordnungen
  3. Analyse
  4. Suchmethode
  5. Aggregation und Filter

Der wichtigste Aspekt von Elasticsearch ist das Verständnis der Architektur.

Cluster

In Elasticserach speichern wir unsere Daten in Knoten. Es kann n Knoten in einer Maschine geben. Und jeder Knoten ist mit dem Cluster verbunden. Der -Cluster ist also eine Gruppe von Knoten .

Dokumente

Sie speichern Ihre Daten als Dokumente , die JSON-Objekte sind. Wie sind diese Daten im Cluster organisiert? Die Antwort lautet Indizes .

In der Welt der relationalen Datenbanken ist Dokumente können mit einer Zeile in einer Tabelle verglichen werden.

Index

Elasticsearch-Indizes sind logische Partitionen von Dokumenten und kann mit einer Datenbank in der Welt der relationalen Datenbanken verglichen werden.

Typen

Jeder Index verfügt über einen oder mehrere Zuordnungstypen, mit denen Dokumente in eine logische Gruppe unterteilt werden. kann mit einer Tabelle in der Welt der relationalen Datenbanken verglichen werden.

Jedes Dokument wird als Index gespeichert . Der Index, den Sie sagen können, ist die Sammlung von Dokumenten. Das hat ähnliche Eigenschaften, zum Beispiel hat die Abteilung einen A-Index und die Mitarbeiter einen B-Index, dh sie sind logisch miteinander verbunden.

Sharding

  1. Sharding ist nur ein Weg zum geteilten Index in kleinere Stücke.
  2. Jedes Stück wird als Shard bezeichnet.
  3. Sharding erfolgt auf Indexebene.

Shard ist wie ein Shard Index. Für Skalierbarkeit. Mit Sharding können Sie Milliarden von Dokumenten in einem Index speichern. Es gibt auch Replikate, aber im Moment ist es gut genug, um Elasticsearch zu starten und zu verstehen.

Gehen wir also weiter zum Aufbau und zur Suchmaschine.

1. Dokumente verwalten

Rufen Sie vorher den Elasticserach-Paketmanager auf.

npm i elasticsearch

Schritt -1- Verknüpfen Sie Ihre Anwendung mit Elasticsearch, indem Sie Folgendes befolgen:

Verbindung

Schritt 2 – Index erstellen für zB Wir erstellen einen Index als gov.

Index erstellen

Schritt 3 – Jetzt fügen wir der Indexregierung Dokumente hinzu, und in der Indexregierung gibt es einen Typ namens Wahlkreise

Sie können sich darauf beziehen, dass es eine Datenbank namens gov gibt und die Tabelle Wahlkreise ist.

Hinzufügen von Dokumenten

2. Zuordnungen

Bei der Zuordnung werden das Dokument und seine Felder definiert. Genau wie beim Definieren eines Tabellenschemas in RDBMS.

Schritt 4 – Jetzt definieren wir Zuordnungen für Index-Gov-Typ-Wahlkreise.

Zuordnungen

3. Analyse

Bei der Textanalyse wird unstrukturierter Text konvertiert Der Text einer E-Mail oder einer Produktbeschreibung in einem strukturierten Format, das für die Suche optimiert ist.

Elasticsearch führt beim Indizieren oder Suchen

text Felder . Das haben wir in Mappings definiert. Dies ist der Schlüsselfaktor für die Suchmaschine.

Standardmäßig verwendet Elasticsearch den Analysator

standard für die gesamte Textanalyse. Der standard -Analysator bietet Ihnen sofort einsatzbereite -Unterstützung für die meisten natürlichen Sprachen und Anwendungsfälle . Wenn Sie den Analysator standard unverändert verwenden, ist keine weitere Konfiguration erforderlich. Sie können auch Ihren eigenen benutzerdefinierten Analysator erstellen.

4. Suchmethode

Es gibt verschiedene Arten von Abfragen, die Sie auf Elasticsearch anwenden können. Auf diese Weise erhalten Sie entsprechende Ergebnisse. Hier gebe ich ein grundlegendes Beispiel für eine Abfrage.

Die einfachste Abfrage, die allen Dokumenten entspricht.

Suchabfrage

Abfragen

Zusammengesetzte Abfragen schließen andere zusammengesetzte oder Blattabfragen ein, um entweder ihre Ergebnisse und Bewertungen zu kombinieren, ihr Verhalten zu ändern oder von Abfrage zu Filterkontext zu wechseln.

Die Standardabfrage zum Kombinieren mehrerer Blatt- oder zusammengesetzter Abfrageklauseln wie must, should, must\_not oder filter. Bei den Klauseln must und should werden die Bewertungen kombiniert.

Der Volltext Mit Abfragen können Sie analysierte Textfelder durchsuchen, z. B. den Text einer E-Mail. Die Abfragezeichenfolge wird mit demselben Analysator verarbeitet, der während der Indizierung auf das Feld angewendet wurde. Es wird Ihre Eingabe analysieren. Wenn die angegebene Eingabe nicht genau, aber dennoch ist, erhalten Sie ein Ergebnis.

Das Durchführen vollständiger Joins im SQL-Stil in einem verteilten System wie Elasticsearch ist unerschwinglich teuer. Stattdessen bietet Elasticsearch zwei Formen der Verknüpfung an, die horizontal skaliert werden können.

1.

nested Abfrage

2.

has\_child und

has\_parent fragt

Diese Gruppe enthält Abfragen, die nicht in die anderen Gruppen passen. Es wurde festgestellt, dass Dokumente, die ähnlicher Natur sind, angeheftete Abfragen auch viele weitere bitte Lesen Sie die Dokumentation zu .

Sie können Abfragen auf Termebene , um Dokumente basierend auf Präzision zu finden e Werte in strukturierten Daten. Beispiele für strukturierte Daten sind Datumsbereiche, IP-Adressen, Preise oder Produkt-IDs.

Im Gegensatz zu Volltextabfragen sind Abfragen auf Begriffebene möglich Suchbegriffe nicht analysieren. Stattdessen stimmen Abfragen auf Begriffebene mit den genauen Begriffen überein, die in einem Feld gespeichert sind. Es wird eine genaue Übereinstimmung der Eingabe gefunden, wobei wie im Volltext zuerst analysiert und dann gesucht wird, sodass ein großer Unterschied zwischen Abfrage auf Term- und Volltextabfrage besteht.

5. Aggregation und Filter

In einem Filterkontext beantwortet eine Abfrageklausel die Frage „ Entspricht dieses Dokument dieser Abfrageklausel? Die Antwort ist ein einfaches Ja oder Nein – Es werden keine Bewertungen berechnet. Der Filterkontext wird hauptsächlich zum Filtern strukturierter Daten verwendet, z. B.

  • Fällt dies timestamp in den Bereich 2015 bis 2016?
  • Ist das Feld status auf ?
  • Häufig verwendete Filter werden von Elasticsearch automatisch zwischengespeichert, um die Leistung zu beschleunigen.

    Der Filterkontext ist immer dann wirksam, wenn eine Abfrageklausel an eine filter, z. B. die Parameter filter oder must\_not in den Parametern

    bool Abfrage, der Parameter filter in der Abfrage

    constant\_score oder die Aggregation

    filter

    Bei der Aggregation ist es eher so wie bei RDBMS, dass Sie mithilfe komplexer Abfragen Durchschnitt, Summe und viele Dateneinblicke finden.

    Zusammenfassung

    1. Was ist Elastic Stack?
    2. Wie ELK funktioniert.
    3. Was ist Elasticsearch und seine Funktionsweise.
    4. Einige grundlegende Fragen dazu.

    Was kommt als nächstes !!

    Da es sich um ein riesiges Thema handelt. Ich habe jedoch versucht, eine kurze Einführung in ELK und Elasticsearch zu geben. Als Nächstes werden wir mithilfe von Elasticsearch eine eigene suchmaschinenähnliche Anwendung erstellen, in der auch ein Codierungsteil behandelt wird. So behalten Sie die Dateistruktur und andere Dinge bei.

    Fazit

    Elastic Stack ist eine sehr wichtige Technologie, die Sie lernen sollten. Sie wenden dies in jedem Ihrer Projekte an. Der ELK-Stapel wird am häufigsten als Protokollanalysetool verwendet. Seine Popularität liegt in der Tatsache, dass es eine zuverlässige und relativ skalierbare Möglichkeit bietet, Daten aus mehreren Quellen zu aggregieren. Es gibt noch viele Dinge, aber danach können Sie mit Elasticsearch beginnen. Ich empfehle Ihnen, die Dokumentation durchzugehen. Wenn Sie Fragen haben oder Probleme mit dem Inhalt haben, hinterlassen Sie bitte einen Kommentar.

    Danke 🙂