Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Was ist Elasticsearch und wie funktioniert es?

Beitrags-Cover: Was ist Elasticsearch und wie funktioniert es?
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Elasticsearch - ist ein Such- und Analysesystem, das auf Lucene basiert. Es wird oft als "Google in Ihrer Infrastruktur" bezeichnet (im Sinne von - eine leistungsstarke Suchmaschine), da es in der Lage ist, Informationen in riesigen Datenmengen - Protokollen, Texten, Metriken, Dokumenten, Produkten usw. - sofort zu finden.

Wie Elasticsearch im Hintergrund funktioniert

Indizierung statt herkömmlicher Speicherung
Daten werden nicht einfach "in eine Tabelle" gelegt, wie in SQL, sondern indiziert: Text wird in Tokens zerlegt, normalisiert und in einen invertierten Index umgewandelt. Dadurch funktioniert die Suche in Millisekunden, selbst bei Millionen von Dokumenten.
Skalierung
Elasticsearch ist als verteiltes System konzipiert. Sein Hauptmerkmal ist die einfache horizontale Skalierung.
Shards - Teile des Index
Jeder Index wird in Teile (Shards) unterteilt, und jeder Shard ist eine separate Lucene-Suchmaschine. Sie können auf verschiedenen Servern leben.
Replikate - Kopien für Geschwindigkeit und Zuverlässigkeit
Jeder Shard kann Kopien haben. Das bedeutet:
  • Das System fällt nicht aus, wenn ein Server ausfällt
  • Das Lesen wird schneller, da auch die Kopien auf Anfragen antworten
Horizontale Skalierung
Um die Leistung oder die Datenmenge zu erhöhen, genügt es, einfach einen neuen Knoten hinzuzufügen. Elasticsearch verteilt die Shards selbst und balanciert den Cluster.
Verteilte Suche
Wenn eine Anfrage eingeht, sendet der Koordinator-Knoten sie an alle Shards, sammelt die Ergebnisse und gibt die Antwort zurück. Die Suche erfolgt parallel - genau deshalb ist ES so schnell.

Elasticsearch im Logging: Was ist der ELK Stack

Eines der beliebtesten Anwendungen von ES ist das Logging. Dafür gibt es einen Stack:
E - Elasticsearch
Speichert und indiziert alle Protokolle.
L - Logstash
Verarbeitet Protokolle: liest, filtert, parst, strukturiert und sendet sie an Elasticsearch.
K - Kibana
Visualisierung: Protokollsuchen, Grafiken, Filter, Dashboards. Dies macht die Analyse von Protokollen bequem und anschaulich.
ELK wird verwendet für:
  • Fehlererkennung
  • Analyse des Systemverhaltens
  • Verständnis von Lastspitzen
  • Cybersicherheit
  • Audit

Analyse und Monitoring: Kibana + Beats

Neben Protokollen wird Elasticsearch zunehmend für Metriken und Monitoring verwendet.
Beats - leichte Agenten, die Daten senden:
  • Filebeat - Logdateien
  • Metricbeat - CPU, RAM, Netzwerk
  • Packetbeat - Verkehr
  • Heartbeat - Verfügbarkeit von Diensten
  • Auditbeat - Sicherheitsereignisse
Sie senden Daten an Elasticsearch, und Kibana ermöglicht das Erstellen von Dashboards, das Überwachen der Systemauslastung, das Analysieren von API-Anfragen und das Finden langsamer Dienste.
Elasticsearch - ist nicht nur eine Suche. Es ist ein verteilter Indexierer, der:
  • blitzschnell im Text sucht
  • einfach skalierbar ist
  • Fehlertoleranz bietet
  • Analyse und Aggregationen unterstützt
  • die Grundlage beliebter Stacks für Protokolle und Monitoring bildet (ELK, Beats)
In der Welt der Big Data ist Elasticsearch eines der bequemsten Werkzeuge, um schnell Informationen zu finden, zu filtern und zu analysieren.

Kann man Elasticsearch als Datenbank verwenden

Elasticsearch ist an sich eine Datenbank. Es verwendet keine MySQL, PostgreSQL oder irgendein anderes externes DBMS. Alle Daten werden in Form von JSON-Dokumenten gespeichert, und die physische Speicherung und Indizierung wird von Lucene bereitgestellt.
Es kann tatsächlich als primäre Datenbank verwendet werden, aber nur in Fällen, in denen Geschwindigkeit bei der Suche und Analyse im Vordergrund steht. Dies kann ein Produktkatalog, ein Protokollspeicher, die Speicherung analytischer Ereignisse oder Zeitreihendaten sein. Allerdings ist Elasticsearch kein vollwertiger Ersatz für traditionelle relationale Datenbanken. Es fehlen klassische ACID-Transaktionen, Beziehungen zwischen Entitäten, strenge Konsistenzkontrolle und sofortige Sichtbarkeit von Datensätzen in der Suche. Aktualisierungen von Dokumenten werden als Löschungen und erneute Indizierungen implementiert, und Löschungen werden nicht sofort, sondern während interner Optimierungen angewendet.
Daher ist es sinnvoll, Elasticsearch als schnelle Such- und Analyseebene, als separate Zeitreihen-Datenbank oder als primären Protokollspeicher zu verwenden. Für Finanztransaktionen, Transaktionen, komplexe Beziehungen und kritisch konsistente Daten sind traditionelle DBMS - PostgreSQL, MySQL usw. - besser geeignet.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

is_a?, kind_of?, instance_of? — wie prüft Ruby den Typ eines Objekts?
30. Okt, 19:55 Uhr

is_a?, kind_of?, instance_of? — wie prüft Ruby den Typ eines Objekts?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
&& vs and — der Unterschied in Ruby, der Ihren Code brechen kann
30. Okt, 20:23 Uhr

&& vs and — der Unterschied in Ruby, der Ihren Code brechen kann

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Variablen in Ruby: @, @@ und Klasseninstanzvariablen
30. Okt, 20:54 Uhr

Variablen in Ruby: @, @@ und Klasseninstanzvariablen

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Der Unterschied zwischen blank?, present?, empty? und nil? in Ruby
30. Okt, 21:06 Uhr

Der Unterschied zwischen blank?, present?, empty? und nil? in Ruby

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist Middleware in Ruby on Rails und wann wird sie verwendet?
04. Nov, 10:39 Uhr

Was ist Middleware in Ruby on Rails und wann wird sie verwendet?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist der Vanilla Rails-Ansatz?
14. Nov, 16:48 Uhr

Was ist der Vanilla Rails-Ansatz?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist eine Zeitreihen-Datenbank?
22. Nov, 12:42 Uhr

Was ist eine Zeitreihen-Datenbank?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
22. Nov, 12:49 Uhr

Was ist VACUUM in PostgreSQL?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist ein B-Baum (ausgeglichener Baum)?
22. Nov, 12:58 Uhr

Was ist ein B-Baum (ausgeglichener Baum)?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Fix des Problems bei der Installation von Ruby 3.4.3 (und nicht nur) über RVM auf macOS (Apple Silicon)
30. Dez, 14:05 Uhr

Fix des Problems bei der Installation von Ruby 3.4.3 (und nicht nur) über RVM auf macOS (Apple Silicon)

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Thundering Herd Problem: was ist das und warum bricht es die Produktion
15. Jan, 10:14 Uhr

Thundering Herd Problem: was ist das und warum bricht es die Produktion

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist Exponential Backoff und Random Jitter?
15. Jan, 15:24 Uhr

Was ist Exponential Backoff und Random Jitter?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska