Azure Search vs. Elastic Search

Für viele Anwendungen und Websites, die offensichtlich nicht nur dazu dienen, Ihr Unternehmen zu repräsentieren, ist die Suchfunktion eines der wichtigsten Werkzeuge. Die Suche kann ein primäres Werkzeug für die Kundeninteraktion sein, da sie eine Quelle des Wissens darüber ist, wonach Ihre Nutzer auf Ihrer Website oder in Ihrer Anwendung suchen. Durch die Analyse der Nutzersuchen können Sie die Benutzerfreundlichkeit verbessern, relevantere Funktionen bereitstellen, um neue Nutzer anzuziehen und bestehende zu halten. Für die Nutzer hat die Suche mindestens zwei Gründe:

  1. Sie müssen sich nicht viel Mühe geben, um etwas zu finden. Zum Beispiel, wenn Ihre Website ziemlich groß ist und ein Nutzer viele Klicks machen muss, um zum gewünschten Inhalt zu gelangen, würde dies sie schnell davon abhalten, sie zu nutzen.
  2. Es ist ein Rettungsanker für Nutzer, die die Benutzeroberfläche Ihrer Lösung nicht verstehen und in der Navigation feststecken. In den meisten Fällen passiert dies auch, wenn Sie eine große Lösung mit viel Inhalt, Tabs, Navigation usw. haben.

Die Suchfunktionalität kann als kleines Eingabefeld auf der Seite dargestellt werden, aber diese kleine Sache kann die Benutzerfreundlichkeit Ihrer Website verbessern, die Anzahl der Kunden erhöhen und Ihrem Geschäft helfen, was schließlich das Hauptziel ist. Deshalb ist Effizienz eine der Schlüsselcharakteristiken der Suche. Egal, wie nützlich und leistungsfähig Ihre Suche ist, wenn der Nutzer lange wartet oder das Relevanzniveau zu niedrig ist, wird dies einen falschen Eindruck erwecken.

Offensichtlich ist es schwer, eine Lösung für alle zu finden. Mit einer breiten Palette von Funktionen, unterschiedlichen Preisen und mehr zum Vergleich, ist jeder Dienst je nach Ihren Bedürfnissen eine gute Wahl. Im ersten Teil des Artikels versuchen wir, zwei sehr beliebte Search-as-a-Service-Angebote zu überprüfen und zu vergleichen: Microsoft (MS) Azure Search und Elasticsearch (ES). Im zweiten Teil überprüfen wir Azure Search in der Praxis.

Überblick über Microsoft Azure Search

Microsoft Azure Search overview
Azure Search ist eine robuste Search-as-a-Service-Cloud-Lösung, die von der Microsoft Corporation entwickelt wurde. Ihre Einführung erfolgte im Jahr 2013, als Microsoft neue Funktionen von Azure ankündigte, einschließlich des neuen Azure Search. Eine der leistungsstarken Funktionen von Azure Search ist die Verwendung künstlicher Intelligenz, um Text und Merkmale aus Bilddateien oder Entitäten und Schlüsselphrasen aus Rohdatentexten zu extrahieren. Die Funktionalität wird durch gängige API-Aufrufe oder das .NET SDK bereitgestellt, was die Arbeit mit der Suche erleichtert und die Komplexität der Informationsgewinnung verbirgt.

Azure Search bietet zahlreiche Funktionen, darunter Suchvorschläge, facettierte Navigation, Filter, Trefferhervorhebung, Sortierung, Seitennummerierung usw. Hier ist ein kurzer Überblick über diese Funktionen:

  1. Volltextsuche und Textanalyse, der Grundfall der Nutzung. Die Abfragesyntax bietet eine Reihe von Operatoren, wie logische, Phrasensuche, Suffix- und Präzedenzoperatoren, und umfasst auch unscharfe und Nähesuchen, Termgewichtung und reguläre Ausdrücke.
  2. Kognitive Suche, diese Funktionalität befindet sich in der Vorschau (bitte beachten Sie, dass diese Information zum Zeitpunkt der Artikelverfassung gültig ist). Sie wurde entwickelt, um Bild- und Textanalysen zu ermöglichen, die auf eine Indexierungspipeline angewendet werden können, um Textinformationen aus Rohinhalten mithilfe von KI-gestützten Algorithmen zu extrahieren.
  3. Datenintegration, Azure Search ermöglicht die Verwendung von Indexern, um automatisch Azure SQL-Datenbanken, Azure Cosmos DB oder Azure Blob-Speicher nach durchsuchbaren Inhalten zu durchsuchen. Azure Blob-Indexer können eine Textsuche in Dokumenten durchführen (einschließlich Microsoft Office-, PDF- und HTML-Dokumenten).
  4. Linguistische Analyse, Sie können benutzerdefinierte lexikalische Analysatoren und Sprachanalysatoren von Lucene oder Microsoft für komplexe Suchanfragen verwenden, die phonetisches Matching und reguläre Ausdrücke umfassen oder für die Handhabung (wie Geschlecht, unregelmäßige Pluralformen, Worttrennung und mehr).
  5. Geo-Suche, Funktionalität zur Suche nach Informationen nach geografischen Standorten oder zur Anordnung der Suchergebnisse basierend auf ihrer Nähe zu einem physischen Standort, was für die Endbenutzer von Vorteil sein kann.
  6. Benutzererfahrungsmerkmale, umfasst alles, was die Benutzerinteraktion mit der Suchfunktionalität erleichtert: Auto-Vervollständigung (Vorschau), Suchvorschläge, Zuordnung äquivalenter Begriffe durch Synonyme, facettierte Navigation (die als Code hinter einer Kategorienliste oder für selbstgesteuertes Filtern verwendet werden kann), Trefferhervorhebung, Sortierung, Seitennummerierung und Drosselung der Ergebnisse.
  7. Relevanz, der Hauptvorteil besteht darin, Bewertungsprofile zu verwenden, um die Relevanz von Werten in den Dokumenten zu modellieren. Zum Beispiel können Sie dies nutzen, wenn Sie möchten, dass heiße Vakanzen höher in den Suchergebnissen angezeigt werden.

Azure Search bietet auch nützliche Tools wie Suchverkehrsanalysen, Registrierungsmetriken für Abfragen pro Sekunde, Latenz und Drosselung. Über das Azure-Portal können Sie auch ganz einfach Ihre Analysen, Index- und Dokumentenzahlen überwachen, Kapazitäten verwalten und vieles mehr. Die hochverfügbare Plattform gewährleistet ein äußerst zuverlässiges Suchdiensterlebnis und bietet eine SLA von 99,9%.

Überblick über Elasticsearch

Elasticsearch overview
Elasticsearch wird für viele verschiedene Anwendungsfälle verwendet, die in diesem Absatz kurz überprüft werden. Es wurde 2012 von Shay Banon gegründet, und die Hauptidee war, eine skalierbare Suchlösung zu schaffen, die dann den Compass – einen Vorläufer von Elasticsearch – ersetzte. Lassen Sie uns also kurz zusammenfassen, worum es bei Elasticsearch geht.

Elasticsearch ist eine dokumentenorientierte Datenbank, die darauf ausgelegt ist, dokumentenorientierte oder halbstrukturierte Daten zu speichern, abzurufen und zu verwalten. Es kann verwendet werden, um nach allen Arten von Dokumenten zu suchen und bietet skalierbare Suche und unterstützt Multi-Tenancy. Elasticsearch bietet Zugriff auf alle Funktionen über eine REST-Schnittstelle, sodass Daten in JSON-Dokumenten gespeichert und dann abgefragt werden können. Elasticsearch ist zudem schema-los und verwendet einige Standards, um die Daten zu indizieren. Die Hauptmerkmale von Elasticsearch sind:

  1. Textsuche, dies ist der häufigste Anwendungsfall, und hauptsächlich wird Elasticsearch verwendet, wo es viel Text gibt, und das Ziel ist es, Daten zu finden, die am besten zu einer spezifischen Phrase passen.
  2. Textsuche und strukturierte Daten ermöglichen es Ihnen, Produkte nach Eigenschaften und Namen zu suchen.
  3. Datenaggregation, wie in der offiziellen Dokumentation erwähnt, hilft das Aggregationsframework aggregierte Daten basierend auf einer Suchanfrage zu liefern. Es basiert auf einfachen Bausteinen, die Aggregationen genannt werden, die zusammengesetzt werden können, um komplexe Zusammenfassungen der Daten zu erstellen. Es gibt viele verschiedene Arten von Aggregationen, jede mit ihrem eigenen Zweck und Ausgabe.
  4. JSON-Dokumentenspeicherung repräsentiert ein JSON-Objekt mit Daten, das die grundlegende Informationseinheit in Elasticsearch ist, die indiziert werden kann.
  5. Geo-Suche bietet die Möglichkeit, Geo- und Suche zu kombinieren. Solche Funktionalitäten werden langsam zu einem Muss für jede Inhaltswebsite.
  6. Auto-Vorschlag ist ebenfalls eine der sehr beliebten Funktionen heutzutage, die es dem Benutzer ermöglicht, vorgeschlagene Abfragen zu erhalten, während sie tippen.
  7. Autovervollständigung ist eine der sehr hilfreichen Funktionen, die das Suchfeld bei teilweise getippten Wörtern basierend auf früheren Suchen automatisch vervollständigt.

Elasticsearch ist nicht neu und hat viele gemeinsame Funktionen mit Azure Search (was ziemlich logisch ist, da beide Suchfunktionen bieten), entwickelt sich jedoch schnell weiter und arbeitet an einer zunehmenden Anzahl von Funktionen. Das Hauptziel dieser beiden Dienste ist klar und konsistent und darauf ausgerichtet, eine schnellere Leistung bei Suchergebnissen für Ihre Suchmaschine zu ermöglichen. Lassen Sie uns versuchen, sie anhand einiger Funktionen zu vergleichen.

Azure Search vs. Elasticsearch

Der Auswahlprozess ist ein wahrhaft individueller Prozess, der von vielen Faktoren abhängt, hauptsächlich von Ihren Zielen und Ihrem Projekt. Im weiteren Verlauf des Artikels werden wir Azure Search und Elasticsearch allgemein vergleichen, was die Hauptfunktionen und gemeinsamen Eigenschaften abdecken wird. Dennoch sollten Sie immer im Hinterkopf behalten, dass Sie beim Vergleichen nicht nur deren Funktionslisten und Preise erforschen, sondern auch verstehen sollten, dass die gewählte Lösung Ihren Standards und Projektanforderungen entsprechen muss. Es könnte auch eine gute Idee sein, ein wenig über Ihre zukünftigen Pläne nachzudenken. Zum Beispiel möchten Sie zu Beginn der Arbeit an Ihrer Anwendung oder Ihrem Dienst nur eine englische Version der Website haben, aber Sie wissen sicher, dass Sie irgendwann eine Mehrsprachintegration planen, also müssen Sie sicherstellen, dass die ausgewählte Plattform immer Ihren Bedürfnissen entspricht. Manchmal ist es schwierig, gleich die teurere Option zu wählen, wenn Ihr Projekt noch klein ist, aber das wird Sie in Zukunft vor einer Migration zu einer anderen Plattform bewahren.

Unterstützte Sprachen

Mehrsprachige Anwendungen sind nicht selten und haben manchmal spezifische Anforderungen an die unterstützten Sprachen (zum Beispiel wird die Unterstützung einer bestimmten Sprache benötigt). Die untenstehende Tabelle zeigt die Liste der für beide Dienste unterstützten Sprachen. Bitte beachten Sie, dass diese Liste zum Zeitpunkt des Verfassens des Artikels gültig ist und von offiziellen Websites stammt.

Sprachen
Arabisch
Armenisch
Bengalisch (Bangla)
Baskisch
Bengalisch
Brasilianisch
Bulgarisch
Katalanisch
Chinesisch
Kroatisch
Tschechisch
Dänisch
Niederländisch
Englisch
Estnisch
Finnisch
Französisch
Galicisch
Deutsch
Griechisch
Gujarati
Hebräisch
Hindi
Ungarisch
Isländisch
Indonesisch
Irisch
Italienisch
Japanisch
Kannada
Koreanisch
Lettisch
Litauisch
Malayalam
Malay (Latein)
Marathi
Norwegisch
Persisch
Polnisch
Portugiesisch
Punjabi
Rumänisch
Russisch
Serbisch
Slowakisch
Slowenisch
Sorani
Spanisch
Schwedisch
Tamil
Telugu
Thai
Türkisch
Ukrainisch
Urdu
Vietnamesisch

Preis

Der Preis ist immer eine ziemlich schwierige Sache zu vergleichen. Diese beiden Dienste haben unterschiedliche Zahlungsarten und unterschiedliche Pläne. In der nachstehenden Tabelle haben wir versucht, den Vergleich unter Berücksichtigung der häufigsten Fragen zur Zahlung wie Zahlungsarten (monatlich, jährlich usw.), Probezeit usw. darzustellen.

Kostenlose Stufe
Monatliche Zahlung
Einmalzahlung
Jahresabonnement
Startpreis (pro Stunde) 0.101$ abhängig von der gewählten Konfiguration
Testphase Nicht notwendig aufgrund der Verfügbarkeit einer kostenlosen Stufe 14 Tage

Beachten Sie bei der Überprüfung der Tabelle sorgfältig, dass einige Punkte keine klaren Antworten haben. Zum Beispiel gibt Elasticsearch keinen genauen Preis für jede Konfiguration an, da es Ihnen ermöglicht, die Infrastruktur einzurichten: Größe des Deployments, Wahl des Cloud-Anbieters (AWS oder GCP), Anzahl der Verfügbarkeitszonen und Art des Deployments, was einen großen Einfluss auf den Preis hat. Azure Search hat keine Testphase, bietet jedoch eine kostenlose Stufe, die zeitlich unbegrenzt genutzt werden kann. Deshalb müssen Sie beim Vergleich der Preise überlegen, was besser zu Ihrer Lösung passt und welche Pläne Sie am Startpunkt haben (kostenlosen Plan oder Testphase nutzen, alles selbst konfigurieren oder konfigurierte Pläne verwenden usw.).

Unterstützte Datentypen

Unterstützte Datentypen können ebenfalls ein heikles Thema sein, wenn Sie die Möglichkeiten jedes Dienstes erforschen. Unten in der Tabelle zeigen wir die von Azure Search und Elasticsearch unterstützten Typen mit einigen zusätzlichen Anmerkungen. Bitte beachten Sie, dass einige der Datentypen durch andere ersetzt werden können, also überprüfen Sie die Tabelle sorgfältig.

string
Sammlung
(String)
Eine Liste von Strings, die optional für die Volltextsuche tokenisiert werden kann. Empfohlene Limit ist 16 MB. Elasticsearch verfügt über separate Datentypen für die Speicherung von Arrays.
boolean
integer 32-Bit-Integerwerte (Int32) und 64-Bit-Integerwerte (Int64)
long
short
byte
binary
double
float
half_float
scaled_float
date Datums- und Uhrzeitwerte im OData V4-Format dargestellt.
GeographyPoint
geo_shape für komplexe Formen wie Polygone Azure Search hat tatsächlich den Typ GeographyPolygon, der eine geografische Region auf dem Globus darstellt. Dieser Typ kann nicht in Dokumentfeldern verwendet werden, aber als Argument.
Range-Datentypen integer_range, float_range, long_range, double_range, date_range
Komplexer Datentyp array, object, nested
IP-Datentyp
Completion Azure Search hat eine separate completion to provide
Datentyp Funktion dafür Auto-Vervollständigungsvorschläge
Token Count-Datentyp zählt die Anzahl der Tokens in einem String
mapper-murmur3 berechnet Hashes von Werten zum Zeitpunkt der Indexierung und speichert sie im Index
mapper-annotated-text indiziert Text mit spezieller Markierung (typischerweise verwendet zur Identifizierung benannter Entitäten)
Percolator-Typ akzeptiert Abfragen aus der query-dsl
Join-Datentyp definiert Eltern-Kind-Beziehungen für Dokumente innerhalb desselben Indexes
Alias-Datentyp definiert einen Alias für ein bestehendes Feld

Programmierschnittstellen

Unterstützte Programmierschnittstellen können eine der wichtigsten Abhängigkeiten sein. In diesem Absatz werden wir diese Dienste nicht in einer Tabelle vergleichen, sondern eine Liste der verfügbaren Schnittstellen für jeden von ihnen bereitstellen. Die folgenden Programmierschnittstellen sind für Azure Search verfügbar:

  1. REST – HTTP-Befehle, die von jeder Programmierplattform und Sprache unterstützt werden, was diese Schnittstelle universell macht.
  2. .NET SDK – .NET-Wrapper für die REST-API, verfügbar für Managed-Code-Sprachen, die auf das .NET Framework abzielen.
  3. Azure Search-Bibliotheken für Python, die über das Azure SDK für Python bereitgestellt werden.

Elasticsearch hat eine breitere Liste unterstützter Clients und auch eine Liste von von der Community beigetragenen Clients, aber in diesem Artikel werden wir nur offizielle Clients überprüfen, die unten aufgeführt sind:

  1. Java REST Client
  2. Java API
  3. JavaScript API
  4. Groovy API
  5. .NET API
  6. PHP API
  7. Perl API
  8. Python API
  9. Ruby API

Trotz einer breiteren Unterstützung bietet Azure Search die REST API, die sie auch für eine breitere Liste von Sprachen verfügbar macht.

Datenquellen importieren

Beide Dienste ermöglichen den Import von Daten aus verschiedenen Quellen. Manchmal ist dies sehr nützlich, insbesondere wenn Sie ein bestehendes Projekt haben und Ihre Daten in den Index verschieben müssen. Azure Search unterstützt die folgende Liste von Datenquellen:

  1. Vorhandene Datenquelle. Sie können vorhandene Indexer auswählen, die in Ihrem Suchdienst definiert sind.
  2. Azure SQL-Datenbank
  3. SQL Server auf Azure VM
  4. Azure Cosmos DB
  5. Azure Blob Storage
  6. Azure Table Storage

Über den Java Database Connection (JDBC)-Importer können Sie Daten von JDBC-Quellen zum Indizieren in Elasticsearch abrufen. Es unterstützt die folgenden Quellen:

  1. PostgreSQL
  2. MS SQL Server
  3. MySQL
  4. Exportieren aus CSV-Dateien.

Beide Dienste ermöglichen es auch, jedes Datenset, das aus JSON-Dokumenten besteht, in den Index zu schieben.

Zusammenfassung

In diesem Artikel haben wir einige recht gängige Parameter verglichen, um einige Unterschiede zwischen den Diensten darzustellen. Trotz aller Artikel und Vergleiche sollten Sie daran denken, dass Sie sich nicht darauf beschränken sollten, was Experten zu sagen haben, wenn Sie eine Lösung auswählen, die Ihrer Meinung nach am besten für Ihr Team geeignet ist. Es ist ein individueller Prozess, und manchmal variiert die richtige Wahl je nach spezifischen Vorlieben, Arbeitsprozessen und den Bedürfnissen Ihres Unternehmens. Deshalb hoffen wir, dass Sie etwas Relevantes für Ihre Bedürfnisse gefunden haben und einer fundierten Entscheidung näher gekommen sind oder zumindest etwas Neues für sich entdeckt haben. Für diejenigen, die nach dem Lesen dieses Artikels Interesse an Azure Search haben, könnte der zweite Teil des Artikels interessant sein, in dem wir einige Beispiele für dessen Verwendung vorstellen.

Über Redwerk

Das Redwerk-Team ist seit 2005 auf dem Markt. Im Laufe der Jahre hat unser engagiertes Entwicklungsteam über 250 Projekte für Kunden aus der ganzen Welt erfolgreich abgeschlossen. Wir haben ein glaubwürdiges Portfolio an Fallstudien über die von uns erbrachten Outsourcing-Dienstleistungen, das unsere Expertise in verschiedenen Technologien und Branchen zeigt. Darüber hinaus sind die meisten Kunden aufgrund der hochwertigen IT-Outsourcing-Dienste die wir anbieten, in langfristiger Zusammenarbeit mit uns. Unser Team ist immer auf dem neuesten Stand der Trends und garantiert das beste Ergebnis für jedes Projekt, das wir betreuen.