Daten aus Azure Database for MySQL Flexible Server indizieren (Vorschau)

Hinweis

Azure KI-Suche ist über das Azure Portal, REST-APIs und Azure SDKs verfügbar. Es unterstützt auch Foundry IQ, die verwaltete Wissensschicht, die Unternehmensinhalte in wiederverwendbare, berechtigungsfähige Wissensbasen für Agenten im Microsoft Foundry-Portal transformiert.

Hinweis

Diese Funktion steht derzeit als Vorschau zur Verfügung. Diese Vorschau wird ohne Vereinbarung auf Serviceebene bereitgestellt und wird für Produktionsworkloads nicht empfohlen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Supplementale Nutzungsbedingungen für Microsoft Azure Previews.

Wichtig

Diese Features und Funktionen unterstützen Verbindungen mit anderen Microsoft-Dienste und Drittanbieterdiensten. Die Nutzung dieser Dienste unterliegt den jeweiligen Bestimmungen und kann dazu führen, dass Daten außerhalb der Azure-Compliancegrenze verarbeitet oder gespeichert werden und dass Daten in die Azure-Compliancegrenze fließen.

Es liegt in Ihrer Verantwortung, zu verwalten, ob Ihre Daten außerhalb der Compliance- und geografischen Grenzen Ihrer Organisation und alle damit verbundenen Auswirkungen fließen und dass entsprechende Berechtigungen, Grenzen und Genehmigungen bereitgestellt werden.

Sie sind dafür verantwortlich, Anwendungen, die Sie im Kontext Ihrer spezifischen Anwendungsfälle erstellen, sorgfältig zu überprüfen und zu testen und alle geeigneten Entscheidungen und Anpassungen zu treffen. Dazu gehört die Implementierung ihrer eigenen verantwortungsvollen KI-Entschärfungen, wie Metaprompts, Inhaltsfilter oder andere Sicherheitssysteme, und sicherzustellen, dass Ihre Anwendungen angemessene Qualität, Zuverlässigkeit, Sicherheit und Vertrauenswürdigkeitsstandards erfüllen. Weitere Informationen finden Sie im Azure KI-Suche Transparenzhinweis.

In diesem Artikel erfahren Sie, wie Sie einen indexer konfigurieren, der Inhalte aus Azure Database for MySQL importiert und in Azure KI-Suche durchsuchbar macht. Eingaben für den Indexer sind Zeilen aus einer einzelnen Tabelle oder Ansicht. Die Ausgabe ist ein Suchindex mit durchsuchbarem Inhalt in einzelnen Feldern.

Dieser Artikel ergänzt Erstellen eines Indexers mit Informationen, die speziell für die Indizierung von Azure Database for MySQL Flexible Server sind. Es verwendet die REST-APIs, um einen dreiteiligen Workflow zu veranschaulichen, der allen Indexern gemeinsam ist: Erstellen einer Datenquelle, Erstellen eines Indexes, Erstellen eines Indexers. Die Datenextraktion tritt auf, wenn Sie die Anforderung zum Erstellen von Indexer übermitteln.

Wenn der Indexer so konfiguriert ist, dass er einen hohen Grenzwert und vorläufiges Löschen umfasst, übernimmt er alle Änderungen, Uploads und Löschungen für Ihre MySQL-Datenbank. Sie spiegelt diese Änderungen in Ihrem Suchindex wider. Die Datenextraktion tritt auf, wenn Sie die Anforderung zum Erstellen von Indexer übermitteln.

Voraussetzungen

  • Registrieren Sie sich für die Vorschau , um Szenariofeedback bereitzustellen. Sie können nach der Formularübermittlung automatisch auf das Feature zugreifen.

  • Azure Database for MySQL Flexible Server und Beispieldaten. Daten müssen sich in einer Tabelle oder Ansicht befinden. Ein Primärschlüssel ist erforderlich. Wenn Sie eine Ansicht verwenden, muss sie eine Spalte mit hohem Wasserzeichen aufweisen.

  • Leseberechtigungen. Ein Vollzugriff Verbindungszeichenfolge enthält einen Schlüssel, der Zugriff auf den Inhalt gewährt, aber wenn Sie Azure-Rollen verwenden, stellen Sie sicher, dass die verwaltete Identität des Suchedienstes über Reader Berechtigungen für MySQL verfügt.

  • Ein REST-Client zum Erstellen der Datenquelle, des Indexes und des Indexers.

    Sie können auch die Azure SDK für .NET verwenden. Sie können das Azure Portal nicht für die Indexerstellung verwenden, aber Sie können Indexer und Datenquellen verwalten, sobald sie erstellt wurden.

Einschränkungen bei der Vorschau

Derzeit funktionieren änderungsnachverfolgung und Löscherkennung nicht, wenn das Datum oder der Zeitstempel für alle Zeilen einheitlich ist. Diese Einschränkung ist ein bekanntes Problem, das in einer Aktualisierung der Vorschau behoben werden soll. Bis dieses Problem behoben ist, fügen Sie dem MySQL-Indexer kein Skillset hinzu.

Die Vorschau unterstützt keine Geometrietypen und Blobs.

Wie bereits erwähnt, gibt es keine Portalunterstützung für die Indexerstellung, aber ein MySQL-Indexer und eine Datenquelle können im Azure Portal verwaltet werden, sobald sie vorhanden sind. Sie können beispielsweise die Definitionen bearbeiten und den Indexer zurücksetzen, ausführen oder planen.

Definieren der Datenquelle

Die Datenquellendefinition gibt die Daten an, die indiziert werden sollen, Anmeldeinformationen und Richtlinien zum Identifizieren von Änderungen in den Daten. Die Datenquelle wird als unabhängige Ressource definiert, sodass sie von mehreren Indexern verwendet werden kann.

Datenquelle erstellen oder aktualisieren gibt die Definition an. Achten Sie darauf, beim Erstellen der Datenquelle eine Vorschau-REST-API zu verwenden.

{   
    "name" : "hotel-mysql-ds",
    "description" : "[Description of MySQL data source]",
    "type" : "mysql",
    "credentials" : { 
        "connectionString" : 
            "Server=[MySQLServerName].MySQL.database.azure.com; Port=3306; Database=[DatabaseName]; Uid=[UserName]; Pwd=[Password]; SslMode=Preferred;" 
    },
    "container" : { 
        "name" : "[TableName]" 
    },
    "dataChangeDetectionPolicy" : { 
        "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName": "[HighWaterMarkColumn]"
    }
}

Wichtige Punkte:

  • type auf "mysql" festlegen (erforderlich).

  • Legen Sie credentials auf eine ADO.NET-Verbindungszeichenfolge fest. Sie finden Verbindungszeichenfolgen im Azure Portal auf der Seite Connection-Zeichenfolgen für MySQL.

  • Setzen Sie container auf den Namen der Tabelle.

  • Legen Sie fest dataChangeDetectionPolicy , ob Daten veränderlich sind und der Indexer nur die neuen und aktualisierten Elemente bei nachfolgenden Ausführungen aufnehmen soll.

  • Legen Sie fest dataDeletionDetectionPolicy , ob Sie Suchdokumente aus einem Suchindex entfernen möchten, wenn das Quellelement gelöscht wird.

Hinweis

Für die Containernameneigenschaft ist der Wert nur auf Buchstaben, Zahlen, Unterstriche (_), Punkte (.), einzelne Striche (-) und eckige Klammern ([]) beschränkt.

Erstellen eines Indexes

Index erstellen oder aktualisieren gibt das Indexschema an:

{
    "name" : "hotels-mysql-ix",
    "fields": [
        { "name": "ID", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false },
        { "name": "Category", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true  },
        { "name": "City", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true },
        { "name": "Description", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false  }     
    ]
}

Wenn der Primärschlüssel in der Quelltabelle mit dem Dokumentschlüssel übereinstimmt (in diesem Fall "ID"), importiert der Indexer den Primärschlüssel als Dokumentschlüssel.

Zuordnen von Datentypen

Die folgende Tabelle zeigt die Entsprechungen zwischen MySQL-Datenbank-Elementen und Azure KI-Suche. Weitere Informationen finden Sie unter Unterstützte Datentypen (Azure KI-Suche).

Hinweis

Die Vorschau unterstützt keine Geometrietypen und Blobs.

MySQL-Datentypen Azure KI-Suche Feldtypen
bool, boolean Edm.Boolean, Edm.String
tinyint, smallint, mediumint, int, , integer, year Edm.Int32, Edm.Int64, Edm.String
bigint Edm.Int64, Edm.String
float, doublereal Edm.Double, Edm.String
date, datetimetimestamp Edm.DateTimeOffset, Edm.String
char, varchar, , tinytextmediumtext, text, longtext, enum, , settime Edm.String
nicht signierte numerische Daten, seriell, dezimal, dec, bit, blob, binär, geometrie N/A

Konfigurieren und Ausführen des MySQL-Indexers

Nachdem der Index und die Datenquelle erstellt wurden, können Sie den Indexer erstellen. Die Indexerkonfiguration gibt die Eingaben, Parameter und Eigenschaften an, die das Laufzeitverhalten steuern.

Erstellen oder aktualisieren Sie einen Indexer , indem Sie ihm einen Namen geben und auf die Datenquelle und den Zielindex verweisen:

{
    "name" : "hotels-mysql-idxr",
    "dataSourceName" : "hotels-mysql-ds",
    "targetIndexName" : "hotels-mysql-ix",
    "disabled": null,
    "schedule": null,
    "parameters": {
        "batchSize": null,
        "maxFailedItems": null,
        "maxFailedItemsPerBatch": null,
        "base64EncodeKeys": null,
        "configuration": { }
        },
    "fieldMappings" : [ ],
    "encryptionKey": null
}

Wichtige Punkte:

Indexerstatus überprüfen

Senden Sie eine Get Indexer Status-Anforderung , um die Indexerausführung zu überwachen:

GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2026-05-01-preview
  Content-Type: application/json  
  api-key: [admin key]

Die Antwort enthält den Status und die Anzahl der verarbeiteten Elemente. Es sollte ähnlich wie im folgenden Beispiel aussehen:

{
    "status":"running",
    "lastResult": {
        "status":"success",
        "errorMessage":null,
        "startTime":"2024-02-21T00:23:24.957Z",
        "endTime":"2024-02-21T00:36:47.752Z",
        "errors":[],
        "itemsProcessed":1599501,
        "itemsFailed":0,
        "initialTrackingState":null,
        "finalTrackingState":null
    },
    "executionHistory":
    [
        {
            "status":"success",
            "errorMessage":null,
            "startTime":"2024-02-21T00:23:24.957Z",
            "endTime":"2024-02-21T00:36:47.752Z",
            "errors":[],
            "itemsProcessed":1599501,
            "itemsFailed":0,
            "initialTrackingState":null,
            "finalTrackingState":null
        },
        ... earlier history items
    ]
}

Der Ausführungsverlauf enthält bis zu 50 der zuletzt abgeschlossenen Ausführungen, die in umgekehrter chronologischer Reihenfolge sortiert sind, sodass die neueste Ausführung zuerst erfolgt.

Indizieren neuer und geänderter Zeilen

Nachdem ein Indexer einen Suchindex vollständig ausgefüllt hat, möchten Sie möglicherweise, dass nachfolgende Indexerläufe nur die neuen und geänderten Zeilen in Ihrer Datenbank inkrementell indizieren.

Um die inkrementelle Indizierung zu aktivieren, legen Sie die dataChangeDetectionPolicy Eigenschaft in der Datenquellendefinition fest. Diese Eigenschaft teilt dem Indexer mit, welcher Änderungsnachverfolgungsmechanismus für Ihre Daten verwendet wird.

Bei Azure Database for MySQL Indexern ist die einzige unterstützte Richtlinie die HighWaterMarkChangeDetectionPolicy.

Die Änderungserkennungsrichtlinie eines Indexers basiert auf einer Spalte mit hohem Wasserzeichen , die die Zeilenversion erfasst, oder das Datum und die Uhrzeit der letzten Aktualisierung einer Zeile. Es ist häufig eine DATE, DATETIMEoder TIMESTAMP Spalte mit einer Granularität, die für die Erfüllung der Anforderungen einer Wasserzeichensäule ausreichend ist.

In Ihrer MySQL-Datenbank muss die Wasserzeichensäule die folgenden Anforderungen erfüllen:

  • Alle Dateneinfügungen müssen einen Wert für die Spalte angeben.
  • Alle Aktualisierungen eines Elements ändern auch den Wert der Spalte.
  • Der Wert dieser Spalte erhöht sich bei jedem Einfügen oder Aktualisieren.
  • Abfragen mit den folgenden WHERE Und ORDER BY Klauseln können effizient ausgeführt werden: WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]

Das folgende Beispiel zeigt eine Datenquellendefinition mit einer Änderungserkennungsrichtlinie:

{
    "name" : "[Data source name]",
    "type" : "mysql",
    "credentials" : { "connectionString" : "[connection string]" },
    "container" : { "name" : "[table or view name]" },
    "dataChangeDetectionPolicy" : {
        "@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName" : "[last_updated column name]"
    }
}

Wichtig

Wenn Sie eine Sicht verwenden, müssen Sie eine „Hoher Grenzwert“-Richtlinie in Ihrer Indexerdatenquelle festlegen.

Wenn die Quelltabelle keinen Index für die Spalte mit hohem Grenzwert enthält, kann das Zeitlimit für die vom MySQL-Indexer verwendeten Abfragen überschritten werden. Insbesondere die Klausel ORDER BY [High Water Mark Column] erfordert für die effiziente Ausführung einen Index, wenn die Tabelle viele Zeilen enthält.

Indizieren gelöschter Zeilen

Wenn Zeilen aus der Tabelle oder Ansicht gelöscht werden, möchten Sie diese Zeilen normalerweise auch aus dem Suchindex löschen. Wenn die Zeilen jedoch physisch aus der Tabelle entfernt werden, hat ein Indexer keine Möglichkeit, das Vorhandensein von Datensätzen abzuleiten, die nicht mehr vorhanden sind. Die Lösung besteht darin, eine Soft-Delete-Technik zu verwenden, um Zeilen logisch zu löschen, ohne sie aus der Tabelle zu entfernen. Fügen Sie ihrer Tabelle oder Ansicht eine Spalte hinzu, und markieren Sie Zeilen mithilfe dieser Spalte als gelöscht.

Bei einer Spalte, die den Löschstatus bereitstellt, kann ein Indexer so konfiguriert werden, dass alle Suchdokumente entfernt werden, für die der Löschstatus festgelegt trueist. Die Konfigurationseigenschaft, die dieses Verhalten unterstützt, ist eine Datenlöscherkennungsrichtlinie, die in der Datenquellendefinition wie folgt angegeben wird:

{
    …,
    "dataDeletionDetectionPolicy" : {
        "@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
        "softDeleteColumnName" : "[a column name]",
        "softDeleteMarkerValue" : "[the value that indicates that a row is deleted]"
    }
}

Dies softDeleteMarkerValue muss eine Zeichenfolge sein. Wenn Sie beispielsweise eine ganzzahlige Spalte haben, in der gelöschte Zeilen mit dem Wert 1 gekennzeichnet sind, verwenden Sie "1". Wenn Sie über eine BIT-Spalte verfügen, in der gelöschte Zeilen durch den booleschen Wert „True“ gekennzeichnet sind, verwenden Sie das Zeichenfolgenliteral True oder true (die Groß- und Kleinschreibung spielt keine Rolle).

Nächste Schritte

Sie können jetzt den Indexer ausführen, den Status überwachen oder die Ausführung des Indexers planen. Die folgenden Artikel gelten für Indexer, die Inhalte aus Azure MySQL abrufen: