Spark Elasticsearch ist eine verteilte NoSQL-Datenbank zur Speicherung, Abfrage und Verwaltung dokumentenorientierter und halbstrukturierter Daten. Es handelt sich um eine als Open Source auf GitHub erhältliche RESTful-Suchmaschine, die auf Apache Lucene aufbaut und gemäß den Bedingungen der Apache-Lizenz veröffentlicht wurde.
Elasticsearch ist Java-basiert und daher für viele Plattformen verfügbar, die Dokumentdateien in verschiedenen Formaten durchsuchen und indizieren können. Die Daten werden in Elasticsearch als schemalose JSON-Dokumente gespeichert, ähnlich wie in NoSQL-Datenbanken.
Elasticsearch ist ein integraler Bestandteil einer umfassenden Reihe von Open-Source-Tools, die als Elastic Stack bezeichnet werden. Elasticsearch ist eine beliebte Volltextsuchmaschine, die ursprünglich von Mitgliedern des Google Brain Teams entworfen und entwickelt wurde. Elasticsearch wird in einer Reihe von kommerziellen Anwendungen – von Reddit über YouTube bis hin zu eBay – eingesetzt. Zahlreiche Unternehmen nutzen die textbasierte Suche inzwischen als wesentlichen Bestandteil ihrer Geschäftsprozesse. In dieser Hinsicht ähnelt Elasticsearch anderen Suchmaschinen.
Ein wesentlicher Unterschied zwischen Elasticsearch und anderen Suchmaschinen besteht jedoch darin, dass Elasticsearch auch verteilte Daten speichern und verwalten kann. Anders ausgedrückt: Elasticsearch wurde für Daten entwickelt, deren Größe ständig variiert. Auf diese Weise lassen sich auch hochkomplexe Abfragen durchführen, unabhängig davon, wie groß ein Datensatz ist. Wenn ein einziger Datenbankserver jedoch Daten von mehreren Benutzern verarbeiten muss, kann sich dies erheblich auf das System auswirken.
Tausende von Top-Unternehmen nutzen Elasticsearch sowohl für ihre Online- als auch für ihre Offline-Daten, darunter Tech-Giganten wie Google, Oracle, Microsoft und zahlreiche andere große Namen.
Aber man muss kein Tech-Gigant sein, um einen einfachen Weg zur Indexierung strukturierter Daten zu nutzen. Sie müssen nur wissen, dass Elasticsearch existiert und verstehen, wie es funktioniert.
Elasticsearch eignet sich für eine breite Palette von Anwendungsfällen wie z. B.:
Wenn Sie wissen möchten, wie Spark Elasticsearch funktioniert und in welchen Fällen Sie es verwenden können, müssen Sie zunächst die Infrastruktur hinter der Architektur von Elasticsearch verstehen. Hierzu zählen der Elasticsearch-Cluster, die Ports 9200 und 9300, Elasticsearch-Shards, Elasticsearch-Replikate, Analysefunktionen sowie Dokumente.
Ein Elasticsearch-Cluster ist eine Gruppe von miteinander verbundenen Compute-Knoten, die jeweils unterschiedliche Bestandteile von Clusterdaten speichern. Als Benutzer können Sie die Anzahl der Knoten, die jedem Cluster zugewiesen werden, anpassen, indem Sie die Datei „elasticsearch.yml“ im Ordner mit den Konfigurationen ändern. Zwar können beliebig viele Cluster ausgeführt werden, doch genügt den meisten Benutzern in der Regel ein Knoten, um die gewünschten Ergebnisse zu erzielen.
Bei einem Elasticsearch-Knoten handelt es sich um eine Computing-Ressource, die speziell auf die Suche, Indexierung und Skalierung der Datenbank abgestimmt ist. Als verteilte Datenbank arbeitet Elasticsearch mit einer Single Source of Truth, dem Elasticsearch-Datenknoten, der Ihre gesamten Daten beinhaltet. Für jeden Knoten eines Clusters wird ein eigener Name verwendet. Typischerweise enthält der Index eines Elasticsearch-Knotens etwa 10 bis 50 Millionen Dokumente.
Auf einem Elasticsearch-Shard finden Sie zwei verschiedene Porttypen. Der erste der beiden Shard-Ports ist immer geöffnet, während der zweite Shard-Port nur geöffnet wird, wenn ein Elasticsearch-Index erstellt und ein Cluster initialisiert wird. Port 9200 ist der Standardport für den primären Shard; 9300 der Standardport für dessen Replikat.
Elasticsearch-Shards sind eine reine Sammlung von Kibana-Indizes innerhalb eines Indexes. Elasticsearch verfügt über zwei verschiedene Indextypen: Elasticsearch-Dokumente (doc) und Elasticsearch-Indizes. Dokumente werden mittels Kennungen und Indizes mit einem eindeutigen Namen verknüpft.
Ein Replikat ist eine Kopie eines Shards, wobei alle Änderungen auf dem sekundären Replikat übernommen werden, aber für den Client transparent bleiben. Das primäre Replikat wird automatisch aktualisiert, wenn neue Daten hinzugefügt bzw. gelöscht, aktualisiert oder geändert werden.
Eine Analysefunktion ist ein Bestandteil eines Elasticsearch-Clusters. Sie ruft Daten aus der Datenbank ab und analysiert diese. Auf diese Weise können Daten, die an den Benutzer übermittelt wurden, gefiltert und sortiert werden.
Elasticsearch-Dokumente sind der primäre Indextyp in Elasticsearch. Jedes Dokument wird als ID im Datensatz angelegt und verfügt über eine einzelne Spalte pro Dokumenttyp. Ein einfaches Beispiel für eine Dokumenten-ID in Elasticsearch lautet {doc id}. Generell verfügt jedes Dokument in einem Elasticsearch-Cluster über eine Shard-ID, einen Namen und ein Array mit Indizes, wobei alle Felder ihre eigenen Shard-übergreifenden Kennungen haben.
Kurz gesagt, Elasticsearch erfasst Daten und veröffentlicht diese auf jedem Knoten im Cluster. Anschließend werden die Daten entsprechend der aktuell gespeicherten Datenmenge nach oben oder unten skaliert. Elasticsearch bietet den Vorteil, dass Sie all Ihre Daten in einer zentralen Datenbank mit einem flexiblen Index-Container speichern können.
Als dokumentenorientierte RESTful-Suchmaschine bietet Elasticsearch eine Vielzahl nützlicher Tools und ist in der Lage, auch umfangreiche und unübersichtliche Datensätze zu verarbeiten. Darüber hinaus können Sie die Software auch ergänzend zu einem anderen Tool einsetzen. Zum Beispiel Elasticsearch + Spark.
Nehmen wir an, Sie möchten nach dem Begriff „Telekommunikation“ suchen. Hierfür genügt die folgende einfache Suchsyntax:
$"type:telecommunications"
Da Elasticsearch dokumentenorientiert ist, können Sie nicht einfach eine Liste von Dokumenten durchsuchen. Sie müssen einen „Dokumententyp“ abfragen. Wir verwenden die Wortfolge "type:telecommunications"
, um sicherzustellen, dass wir nur Dokumente erhalten, die den Suchkriterien entsprechen.Für diese Abfrage übertragen wir die ID-Nummer des Dokuments als Abfrageparameter:
$"type:telecommunications"
Um dies weiter zu testen, können Sie auch ein einfaches Beispieldokument erstellen, indem Sie die folgende Abfrage ausführen:
create index:type:telecommunications create partition:type:telecommunications --data-urlencode /tasks --data-urlencode tasks/
Das Tool Elasticsearch kombiniert die Lucene-Indexierung mit einem robusten verteilten Datenbankmodell. Auf diese Weise werden Datensätze in kleine Einheiten, sogenannte Shards, fragmentiert und auf verschiedene Knoten verteilt.
Die in Elasticsearch gespeicherten Daten liegen entweder im JSON-Format oder im CSV-Format vor. Jeder Index verfügt über ein eigenes Template für die im Index gespeicherten Dokumente. Der Index wird vollständig repliziert, wobei ein Message Bus zur Kommunikation mit der sekundären Replikation verwendet wird. Logdateien werden als Elasticsearch-Indizes erstellt.
Diese Dokumente werden als Array mit Key-Value-Paaren in einer Datenstruktur gespeichert, die als „Memcached Set“ bezeichnet wird. Ein Memcached Set ist eine schlanke, skalierbare Datenstruktur mit geringem Speicherbedarf, die in der Lage ist, Daten mit großem Speichervolumen zu speichern und zu verarbeiten.
Der Speicher von Elasticsearch wurde für die Aufnahme, Indexierung und Suche optimiert, wobei die Dateien in regelmäßigen Intervallen auf die Festplatte geschrieben werden. Die Größe des Indexes kann nur geändert werden, indem das zuletzt eingefügte Dokument gelöscht und durch ein neues ersetzt wird. Diese Aufgabe bezeichnet man als „Datenmigration“. Dabei wird ein neues Dokument aus dem neuen Index erstellt, aktualisiert und anschließend wieder eingefügt.
Die Elasticsearch-Aggregation, also die Zuweisung desselben Clusters an mehrere Endpoints, ist eine leistungsstarke Funktion, mit der Sie denselben Elasticsearch-Cluster für zusätzliche Daten und Funktionen nutzen können, ohne die Performance Ihres Produktionsclusters zu beeinträchtigen.
Bei der Aggregation von Clustern wird jedem Knoten einer von drei verschiedenen Workload-Typen zugewiesen. Diese Workload-Typen sind:
Alle von Elasticsearch generierten Netzwerkanfragen werden durch Abfragen generiert, die auf dem Elasticsearch-Cluster ausgeführt werden.
Ist ein Elasticsearch-Knoten inaktiv, ist es die Aufgabe des Betriebssystems, Abfragen auf einem Hintergrund-Thread auszuführen und kontinuierlich über die Ergebnisse zu berichten. Bei der Verwendung eines Elasticsearch-Knotens greift im Falle eines Knotenausfalls ein Failover-Mechanismus. Im Falle einer Knotenüberlastung leitet der Knoten die Abfrageanfragen an eine Reihe anderer Knoten weiter und wartet, bis einer der anderen Knoten frei ist.
Bei dem von Elasticsearch generierten Netzwerkverkehr handelt es sich in den meisten Fällen um die Abfrage zugehöriger Daten. Aber auch in vielen anderen Situationen können Sie von den Vorteilen von Elasticsearch profitieren.
Alle durch Elasticsearch generierten Netzwerkanfragen werden weiterhin durch Abfragen generiert, die auf dem Elasticsearch-Cluster laufen.
Zwar kann dies ein vollständiger Elasticsearch-Cluster für ein großes System sein (und ist sicherlich ein guter Anfang), doch gibt es Zeiten, in denen es sinnvoll ist, Elasticsearch mit einer relationalen Datenquelle zu kombinieren. In diesen Fällen greift Elasticsearch für die Verarbeitung auf eine sekundäre relationale Datenquelle zurück und zeichnet nur einen Teil der durchgeführten Abfragen auf. In diesem Szenario wird jedem Knoten nur eine sekundäre Quelle zugewiesen, während die andere inaktiv bleibt.
Ein wesentlicher Unterschied zwischen der Elasticsearch-Aggregation und der herkömmlichen Aggregation besteht darin, dass die Elasticsearch-Aggregation eine sekundäre Datenquelle verwendet, um die aggregierten Daten zu speichern und zu verarbeiten, während andere Aggregationen denselben Elasticsearch-Cluster für mehrere Aufgaben nutzen können. Auf diese Weise lassen sich mit der Elasticsearch-Aggregation größere Datenmengen speichern, ohne dass zusätzliche Abfragen für einen primären Datensatz wie SQL- oder NoSQL-Datensätze erstellt werden müssen.
Die Installation ist relativ unkompliziert. Sie können Standard-Repositories für Elasticsearch verwenden und eine Standardumgebung für Elasticsearch festlegen.
Elasticsearch verwendet eine Konfigurationsdatei namens Kibana.yml als Grundlage für die Konfiguration. Sie können die Datei an Ihre Anforderungen anpassen. Darüber hinaus können Sie auch einen der gängigeren Anbieter von Elasticsearch-Plugins wie InfluxDB, Logstash etc. verwenden.
Mit Elasticsearch können Sie über eine einfache API Daten in jeglicher Form suchen und filtern. Es handelt sich um eine RESTful-API, was bedeutet, dass Benutzer sie nicht nur für die Datenanalyse, sondern auch für webbasierte Anwendungen in der Produktion verwenden können. Derzeit beinhaltet Elasticsearch eine Attributsuche, eine Funktion, die es Ihnen ermöglicht, Aggregationen Ihrer Daten zu berechnen. Nachfolgend finden Sie einige besonders relevante Funktionen:
Der Elasticsearch-Dienst ist die mit Abstand am häufigsten eingesetzte, leistungsfähigste und nützlichste Suchtechnologie. Dies resultiert aus der Tatsache, dass Elasticsearch bei der schnellen und effizienten Verarbeitung großer Datenmengen deutlich besser als die meisten der vergleichbaren SQL-Technologien abschneidet.
Elasticsearch wurde eigens als Suchanwendung für Unternehmen entwickelt und bietet leistungsstarke Funktionen und benutzerfreundliche Tools für Unternehmen, die auf Datenanalysen setzen. Damit bieten wir ihnen eine wesentlich praktischere und flexiblere Möglichkeit, Datenbatches ressourcenschonend zu speichern, zu durchsuchen und zu analysieren.
Es gibt zwei schnelle Methoden herauszufinden, welche Version von Elasticsearch Sie verwenden. Die erste Option: Starten Sie Ihre ElasticSearch-Konsole und melden Sie sich dort an, um Ihre Softwareversion anzuzeigen. Die zweite Option: Lesen Sie in der offiziellen Dokumentation von Elasticsearch nach.
Wenn Sie überlegen, welche Software Sie verwenden möchten, sollten Sie zunächst die drei besten Alternativen zu Elasticsearch in Erwägung ziehen, ehe Sie Ihre Entscheidung treffen:
Amazon Web Services (AWS) ist mittlerweile die führende Computing-Plattform für Startups, Spitzenforschung und Großunternehmen, die ihre Computing-Infrastruktur optimieren wollen. Mit einer Technologie, die Kunden in die Lage versetzt, ihre eigenen virtuellen Server zu nutzen und zu erstellen, und mit dem branchenweit umfassendsten Angebot an Cloud-Computing-Services verschärft AWS die sogenannten „Cloud Wars“ zwischen Azure von Microsoft und GCP von Google.
Apache Solr ist ein in Java geschriebener (BSD-lizenzierter) Open-Source-Daemon für Suchanalysen und eine der am meisten verwendeten Open-Source-Suchmaschinen. Die Suchfunktionen zahlreicher der weltweit größten E-Commerce-Websites und Social-Media-Plattformen wie Twitter, Yahoo, Amazon, eBay und eBay Enterprise basieren auf Solr.
Solr nutzt eine verteilte Architektur, um eine schnelle Suche zu ermöglichen, und verfügt über eine einzigartige einheitliche Storage-API, mit der sich die Suchmaschine nahtlos in praktisch jedes Speichersystem eines Unternehmens integrieren lässt.
ArangoDB ist eine verteilte, dokumentenorientierte NoSQL-Datenbank, die sich aufgrund ihrer leistungsstarken analytischen Datenverarbeitung und ihrer Benutzerfreundlichkeit zu einer gefragten Option entwickelt hat. Es handelt sich um eine SQL-ähnliche Sprache, die ArangoDB als Key-Value-Speicher nutzt und es Benutzern ermöglicht, Tabellen, Verknüpfungen und Abfragen so zu erstellen wie in relationalen Datenbanken.
Ein positiver Aspekt von ArangoDB ist, dass der gesamte Code auf dem neuesten Stand gehalten wird. Auch die Support-Seiten sind übersichtlich gestaltet. Je weiter ein Projekt voranschreitet und je mehr Menschen dazu beitragen, desto aktueller und übersichtlicher werden die Seiten. Zudem ist ArangoDB mit allen gängigen Programmiersprachen wie Python und Javascript kompatibel.
Damit Sie Ihre Daten optimal nutzen können, empfehlen wir die Verwendung von Elasticsearch in Kombination mit anderen Tools und Softwareprogrammen – insbesondere mit Hevo Data, Logstash und Apache Nifi.
Hevo Data Elasticsearch ist eine kostenlose, verteilte Open-Source-Suchmaschine, die Elasticsearch-Daten aufnimmt, sie für Abfragen parst und diese als Ereignisprotokolle auf den Clusterknoten ausführt. Mit dieser Software können Sie Analyseabfragen in Echtzeit mit Echtzeitdaten sowie Backups dieser Daten vornehmen.
Einfach ausgedrückt ist Logstash ein Elasticsearch-Tool, mit dem Sie Regeln definieren können, um eingehende Daten zu verwalten, sobald sie von Elasticsearch extrahiert wurden. Durch die sofortige Verarbeitung der Daten bietet Logstash Analyse- und Visualisierungstools, mit denen Sie Ihre Daten optimal verwerten können.
Apache Nifi besteht aus einer Reihe von Bibliotheken, die Deeplinks zwischen mehreren Datenquellen ermöglichen. Dazu gehören unter anderem beliebte Open-Source-APIs wie die Core Location API von Facebook, die REST-APIs von Twitter oder auch die In-App Feature API von Yelp. Mit Apache NiFi können Benutzer ihre eigenen APIs verknüpfen und alle Informationen eines Datensatzes diversen anderen Programmen zur Verfügung stellen.
Mit Ihrem Wissen über Elasticsearch, von den Funktionen bis hin zur Infrastruktur und Architektur, müssen Sie jetzt nur noch entscheiden, ob das Tool das Richtige für Ihr Unternehmen ist.
