Indexer in Azure Cognitive Search

Ein Indexer in Azure Cognitive Search ist ein Crawler, der durchsuchbare Inhalte aus Cloud-Datenquellen extrahiert und einen Suchindex mithilfe von Feld-zu-Feld-Zuordnungen zwischen Quelldaten und einen Suchindex auffüllt. Dieser Ansatz wird auch als „Pullmodell“ bezeichnet, weil der Suchdienst Daten abruft, ohne dass Sie Code schreiben müssen, der einem Index Daten hinzufügt. Indexer steuern auch die Funktionen der KI-Anreicherung von Cognitive Search und integrieren die externe Verarbeitung von Inhalten auf dem Weg zu einem Index.

Indexer sind nur in der Cloud verfügbar, mit einzelnen Indexern für unterstützte Datenquellen. Beim Konfigurieren eines Indexers geben Sie eine Datenquelle (Ursprung) sowie einen Suchindex (Ziel) an. Bei mehreren Quellen, z. B. Azure Blob Storage, gibt es zusätzliche Konfigurationseigenschaften, die für diesen Inhaltstyp spezifisch sind.

Sie können Indexer bei Bedarf oder nach einem Zeitplan für die regelmäßige Datenaktualisierung ausführen (z. B. alle fünf Minuten). Für häufigere Aktualisierungen ist ein Pushmodell erforderlich, bei dem Daten gleichzeitig in Azure Cognitive Search und in Ihrer externen Datenquelle aktualisiert werden.

Verwenden von Indexern

Sie können einen Indexer entweder als einzige Datenerfassungsmethode oder in einer Kombination aus Techniken verwenden, die Inhalte laden und optional auch transformieren oder anreichern. In der folgenden Tabelle werden die Hauptszenarios zusammengefasst.

Szenario Strategie
Einzelne Datenquelle Dieses Muster ist das einfachste: eine einzige Datenquelle ist der einzige Inhaltsanbieter für einen Suchindex. Die meisten unterstützten Datenquellen bieten eine Form der Änderungserkennung, sodass nachfolgende Indexerausführungen den Unterschied übernehmen, wenn Inhalte in der Quelle hinzugefügt oder aktualisiert werden.
Mehrere Datenquellen Eine Indexerspezifikation kann nur eine einzige Datenquelle haben, aber der Suchindex selbst kann Inhalte aus mehreren Quellen akzeptieren, wobei jede Indexerausführung neuen Inhalt von einem anderen Datenanbieter liefert. Jede Quelle kann ihren Anteil an vollständigen Dokumenten beitragen oder ausgewählte Felder in jedem Dokument auffüllen. Einen genaueren Blick auf dieses Szenario finden Sie unter Tutorial: Indizieren von mehreren Datenquellen mithilfe des .NET SDK.
Mehrere Indexer Mehrere Datenquellen werden in der Regel mit mehreren Indexern gekoppelt, wenn Sie Laufzeitparameter, den Zeitplan oder Feldzuordnungen anpassen müssen.

Regionübergreifendes Aufskalieren von Cognitive Search ist ein anderes Szenario. Es kann sein, dass sich mehrere Kopien des gleichen Suchindex in unterschiedlichen Regionen befinden. Zum Synchronisieren des Suchindexinhalts können mehrere Indexer vorhanden sein, die Daten aus derselben Datenquelle pullen und in jeder Region jeweils einen anderen Suchindex als Ziel verwenden.

Für die parallele Indizierung besonders großer Datasets ist ebenfalls eine Strategie mit mehreren Indexern erforderlich, wobei jedem Indexer eine Teilmenge der Daten zugeordnet ist.
Inhaltstransformation Indexer steuern auch die KI-Anreicherung. Inhaltstransformationen werden in einem Skillset definiert, das Sie dem Indexer anfügen.

Unterstützte Datenquellen

Die Indexer durchforsten die Datenspeicher in und außerhalb von Azure.

Indexer akzeptieren flache Zeilensätze, z. B. eine Tabelle oder Ansicht, oder Elemente in einem Container oder Ordner. In den meisten Fällen wird ein Suchdokument pro Zeile, Datensatz oder Element erstellt.

Indexerverbindungen mit Remotedatenquellen können über standardmäßige Internetverbindungen (öffentlich) oder über verschlüsselte privaten Verbindungen hergestellt werden, wenn Sie virtuelle Azure-Netzwerke für Client-Apps verwenden. Sie können auch Verbindungen mit Authentifizierung über eine verwaltete Identität einrichten. Weitere Informationen zu sicheren Verbindungen finden Sie unter Gewähren des Zugriffs über private Endpunkte sowie unter Einrichten einer Indexerverbindung mit einer Datenquelle mithilfe einer verwalteten Identität.

Phasen der Indizierung

Bei einer anfänglichen Ausführung, bei der der Index leer ist, liest ein Indexer alle Daten, die in der Tabelle oder im Container bereitgestellt werden. Bei nachfolgenden Ausführungen kann der Indexer in der Regel nur die geänderten Daten erkennen und abrufen. Bei Blobdaten erfolgt die Änderungserkennung automatisch. Bei anderen Datenquellen wie Azure SQL oder Cosmos DB muss die Änderungserkennung aktiviert werden.

Für jedes empfangene Dokument implementiert oder koordiniert der Indexer mehrere Schritte – vom Abrufen des Dokuments bis hin zur Übergabe an eine Suchmaschine für die Indizierung. Optional initiiert ein Indexer auch Skillsetausführungen und -ausgaben, vorausgesetzt, dass ein Skillset definiert ist.

Indexer Stages

Phase 1: Dokumententschlüsselung

Dokumententschlüsselung ist der Vorgang des Öffnens von Dateien und des Extrahierens von Inhalt. Textbasierte Inhalte können aus Dateien in einem Dienst, Zeilen in einer Tabelle oder Elementen in Containern oder Sammlungen extrahiert werden. Wenn Sie einem Indexer ein Skillset und Bildanalyseskills hinzufügen, kann die Dokumententschlüsselung auch Bilder extrahieren und zur Verarbeitung in die Warteschlange einreihen.

Abhängig von der Datenquelle führt der Indexer verschiedene Vorgänge aus, um potenziell indizierbare Inhalte zu extrahieren:

  • Wenn es sich bei dem Dokument um eine Datei handelt, z. B. eine PDF-Datei oder ein anderes in Azure Blob Storage unterstütztes Dateiformat, öffnet der Indexer die Datei und extrahiert Text, Bilder und Metadaten. Indexer können auch Dateien aus SharePoint und Azure Data Lake Storage Gen2 öffnen.

  • Wenn es sich bei dem Dokument um einen Datensatz in Azure SQL handelt, extrahiert der Indexer die nicht binären Inhalte aus jedem Feld in jedem Datensatz.

  • Handelt es sich bei dem Dokument um einen Datensatz in Cosmos DB, extrahiert der Indexer die nicht binären Inhalte aus Feldern und Unterfeldern des Cosmos DB-Dokuments.

Phase 2: Feldzuordnungen

Ein Indexer extrahiert Text aus einem Quellfeld und sendet ihn an ein Zielfeld in einem Index oder Wissensspeicher. Wenn Feldnamen und -typen übereinstimmen, ist der Pfad klar. Möglicherweise möchten Sie aber unterschiedliche Namen oder Typen in der Ausgabe, in welchem Fall Sie dem Indexer mitteilen müssen, wie das Feld zugeordnet werden soll.

Um Feldzuordnungen anzugeben,geben Sie die Quell- und Zielfelder in die Indexerdefinition ein.

Dieser Schritt erfolgt nach der Dokumententschlüsselung, aber vor Transformationen, wenn der Indexer aus den Quelldokumenten liest. Wenn Sie eine Feldzuordnung definieren, wird der Wert des Quellfelds unverändert an das Zielfeld gesendet.

Phase 3: Skillset-Ausführung

Skillset-Ausführung ist ein optionaler Schritt, der die integrierte oder benutzerdefinierte KI-Verarbeitung aufruft. Möglicherweise benötigen Sie es für die optische Zeichenerkennung (OCR) in Form einer Bildanalyse, wenn es sich bei den Quelldaten um ein Binärbild handelt, oder für die Übersetzung eines Textes, wenn der Inhalt in verschiedenen Sprachen vorliegt.

Wie auch immer die Transformation aussieht, die Skillset-Ausführung ist der Zeitpunkt, an dem eine Anreicherung erfolgt. Wenn ein Indexer eine Pipeline ist, können Sie sich einen Skillset als „Pipeline innerhalb der Pipeline“ vorstellen.

Phase 4: Ausgabefeldzuordnungen

Wenn Sie ein Skillset einschließen, müssen Sie Ausgabefeldzuordnungen in der Indexerdefinition angeben. Die Ausgabe eines Skillsets wird intern als Struktur manifestiert, die als angereichertes Dokumentbezeichnet wird. Mithilfe von Ausgabefeldzuordnungen können Sie auswählen, welche Teile dieser Struktur Feldern in Ihrem Index zugeordnet werden sollen.

Trotz der Ähnlichkeit bei Namen erstellen Ausgabefeldzuordnungen und Feldzuordnungen Zuordnungen aus verschiedenen Quellen. Feldzuordnungen ordnen den Inhalt des Quellfelds einem Zielfeld in einem Suchindex zu. Ausgabefeld-Zuordnungen ordnen den Inhalt eines internen angereicherten Dokuments (Skill-Outputs) den Zielfeldern im Index zu. Anders als bei Feldzuordnungen, die als optional angesehen werden, müssen Sie immer eine Ausgabefeldzuordnung für jeglichen transformierten Inhalt definieren, der sich in einem Index befinden muss.

Die nächste Abbildung zeigt eine Beispieldarstellung einer Indexer-Debugsitzungder Indexerphasen: Dokumententschlüsselung, Feldzuordnungen, Skillset-Ausführung und Ausgabefeldzuordnungen.

sample debug session

Grundlegender Workflow

Indexer können Features bereitstellen, die für die Datenquelle eindeutig sind. In dieser Hinsicht variieren einige Aspekte von Indexern oder der Datenquellenkonfiguration nach Indexertyp. Für alle Indexer werden aber die gleiche grundlegende Zusammenstellung und die gleichen Anforderungen verwendet. Die Schritte, die für alle Indexer gelten, sind unten beschrieben.

Schritt 1: Erstellen einer Datenquelle

Indexer benötigen ein Datenquellenobjekt mit einer Verbindungszeichenfolge und ggf. Anmeldeinformationen. Rufen Sie Azure Cognitive Search-REST-API zum Erstellen einer Datenquelle oder die Klasse SearchIndexerDataSourceConnection auf, um die Ressource zu erstellen.

Datenquellen werden unabhängig von den Indexern, die darauf zugreifen, konfiguriert und verwaltet. Dies bedeutet, dass eine Datenquelle von mehreren Indexern verwendet werden kann, um mehr als einen Index gleichzeitig zu laden.

Schritt 2: Erstellen eines Index

Mit einem Indexer werden einige Aufgaben in Bezug auf die Datenerfassung automatisiert, aber das Erstellen eines Index gehört im Allgemeinen nicht dazu. Als Voraussetzung hierfür müssen Sie über einen vordefinierten Index mit Feldern verfügen, die den Feldern in Ihrer externen Datenquelle entsprechen. Felder müssen nach Name und Datentyp übereinstimmen. Andernfalls können Sie Feldzuordnungen definieren, um die Zuordnung einzurichten. Weitere Informationen zum Strukturieren eines Index finden Sie unter Index erstellen (Azure Cognitive Search-REST-API) sowie unter Klasse „SearchIndex“.

Tipp

Indexer können zwar keinen Index für Sie erstellen, diese Aufgabe kann jedoch mit dem Assistenten Daten importieren im Portal ausgeführt werden. In den meisten Fällen kann der Assistent ein Indexschema aus vorhandenen Metadaten in der Quelle ableiten und ein vorläufiges Indexschema bereitstellen, das Sie inline bearbeiten können, während der Assistent aktiv ist. Sobald der Index für den Dienst erstellt wurde, ist die weitere Bearbeitung im Portal hauptsächlich auf das Hinzufügen neuer Felder beschränkt. Verwenden Sie den Assistenten zum Erstellen, aber nicht zum Überarbeiten eines Index. Praxisnahe Lerninhalte finden Sie in der exemplarischen Vorgehensweise zum Portal.

Schritt 3: Erstellen und Ausführen (oder Planen) des Indexers

Standardmäßig erfolgt die erste Indexerausführung, wenn Sie einen Indexer für den Suchdienst erstellen. Sie können die Eigenschaft "disabled" in einem Indexer festlegen, um sie zu erstellen, ohne sie auszuführen.

Während der Indexerausführung ermitteln Sie, ob auf die Datenquelle zugegriffen werden kann oder ob das Skillset gültig ist. Bis zum Start der Indexerausführung sind abhängige Objekte wie Datenquellen und Skillsets im Suchdienst inaktiv.

Nach der ersten Ausführung können Sie ihn bei Bedarf mithilfe von Indexer ausführen erneut ausführen oder aber eine Zeitplanserie definieren.

Sie können den Indexerstatus im Portal oder über die API zum Abrufen des Indexer-Status überwachen. Sie sollten auch Abfragen für den Index ausführen, um zu überprüfen, ob das Ergebnis Ihren Erwartungen entspricht.

Nächste Schritte

Nach dieser Einführung können Sie sich als Nächstes mit Indexereigenschaften und -parametern sowie mit der Planung und Überwachung von Indexern vertraut machen. Alternativ können Sie zur Liste mit den unterstützten Datenquellen zurückkehren und sich ausführlicher über eine bestimmte Quelle informieren.