Erstellen eines Indexers (Azure AI Search-REST-API)

Ein Indexer automatisiert die Indizierung aus unterstützten Azure-Datenquellen wie Azure Storage, Azure SQL Database und Azure Cosmos DB, um nur einige zu nennen. Indexer verwenden eine vordefinierte Datenquelle und einen vordefinierten Index , um eine Indizierungspipeline einzurichten, die Quelldaten extrahiert und serialisiert und an einen Suchdienst für die Datenerfassung übergibt. Für die KI-Anreicherung von Bildern und unstrukturiertem Text können Indexer auch ein Skillset akzeptieren, das die KI-Verarbeitung definiert.

Beim Erstellen eines Indexers wird dieser ihrem Suchdienst hinzugefügt und ausgeführt. Wenn die Anforderung erfolgreich ist, wird der Index mit durchsuchbarem Inhalt aus der Datenquelle aufgefüllt.

Sie können entweder POST oder PUT für die Anforderung verwenden. Für beides stellt das JSON-Dokument im Anforderungstext die Objektdefinition bereit.

POST https://[service name].search.windows.net/indexers?api-version=[api-version]
    Content-Type: application/json  
    api-key: [admin key]  

Alternativ können Sie PUT verwenden und den Indexernamen für den URI angeben.

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=[api-version]
    Content-Type: application/json  
    api-key: [admin key]    

HTTPS ist für alle Dienstanforderungen erforderlich. Wenn der Indexer nicht vorhanden ist, wird er erstellt. Wenn sie bereits vorhanden ist, wird sie auf die neue Definition aktualisiert, aber Sie müssen eine Run Indexer-Anforderung ausgeben, wenn Sie die Indexerausführung wünschen.

Die Indexerkonfiguration variiert je nach Typ der Datenquelle. Um Informationen zum Erstellen von Indexern für verschiedene Datenplattformen zu erhalten, lesen Sie die Übersicht über Indexer, die eine vollständige Liste verwandter Artikel enthält.

URI-Parameter

Parameter BESCHREIBUNG
Dienstname Erforderlich. Legen Sie dies auf den eindeutigen, benutzerdefinierten Namen Ihres Suchdiensts fest.
Indexername Erforderlich für den URI bei Verwendung von PUT. Der Name muss klein geschrieben sein, mit einem Buchstaben oder einer Zahl beginnen, keine Schrägstriche oder Punkte aufweisen und weniger als 128 Zeichen umfassen. Der Name muss mit einem Buchstaben oder einer Zahl beginnen, aber der Rest des Namens kann beliebige Buchstaben, Zahlen und Bindestriche enthalten, solange die Bindestriche nicht aufeinander folgen.
api-version Erforderlich. Eine Liste der unterstützten Versionen finden Sie unter API-Versionen .

Anforderungsheader

Die folgende Tabelle beschreibt die erforderlichen und optionalen Anforderungsheader.

Felder BESCHREIBUNG
Content-Type Erforderlich. Auf application/json
api-key Optional, wenn Sie Azure-Rollen verwenden und in der Anforderung ein Bearertoken bereitgestellt wird, andernfalls ist ein Schlüssel erforderlich. Erstellen von Anforderungen muss einen api-key Header enthalten, der auf Ihren Administratorschlüssel festgelegt ist (im Gegensatz zu einem Abfrageschlüssel). Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Azure AI Search mithilfe der Schlüsselauthentifizierung .

Anforderungstext

Eine Datenquelle, ein Index und ein Skillset sind Teil der Definition eines Indexers. Es handelt sich aber jeweils um eine unabhängige Komponente, die in unterschiedlichen Kombinationen verwendet werden kann. Beispielsweise können Sie dieselbe Datenquelle mit mehreren Indexern, denselben Index mit mehreren Indexern oder mehrere Indexer verwenden, die in einen gemeinsamen Index schreiben.

Der folgende JSON-Code ist eine allgemeine Darstellung der Standard Teile der Definition.

{   
    "name" : (optional on PUT; required on POST) "Name of the indexer",  
    "description" : (optional) "Anything you want, or nothing at all", 
    "dataSourceName" : (required) "Name of an existing data source",  
    "targetIndexName" : (required) "Name of an existing index",  
    "skillsetName" : (required for AI enrichment) "Name of an existing skillset",
    "disabled" : (optional) Boolean value indicating whether the indexer is disabled. False by default,
    "schedule" : (optional but runs once immediately if unspecified) { ... },  
    "parameters": { (optional)
       "batchSize": null,
       "maxFailedItems": 0,
       "maxFailedItemsPerBatch": 0,
       "base64EncodeKeys": null,
       "configuration": { (optional, mostly specific to the data source)
            "executionEnvironment": null
        }
      }, 
    "fieldMappings" : (optional) { ... },
    "outputFieldMappings" : (required for AI enrichment) { ... },
    "encryptionKey":(optional) { }
} 

Die Anforderung enthält die folgenden Eigenschaften:

Eigenschaft BESCHREIBUNG
name Erforderlich. Der Name muss klein geschrieben sein, mit einem Buchstaben oder einer Zahl beginnen, keine Schrägstriche oder Punkte aufweisen und weniger als 128 Zeichen umfassen. Der Name muss mit einem Buchstaben oder einer Zahl beginnen, aber der Rest des Namens kann beliebige Buchstaben, Zahlen und Bindestriche enthalten, solange die Bindestriche nicht aufeinander folgen.
dataSourceName Erforderlich. Name einer vorhandenen Datenquelle. Es enthält häufig Eigenschaften, die ein Indexer verwenden kann, um Eigenschaften der Quellplattform auszunutzen. Daher bestimmt die Datenquelle, die Sie an den Indexer übergeben, die Verfügbarkeit bestimmter Eigenschaften und Parameter, z. B. Inhaltstypfilterung in Azure-Blobs. oder Abfragetimeout für Azure SQL-Datenbank.
targetIndexName Erforderlich. Name eines vorhandenen Indexschemas. Es definiert die Fields-Auflistung, die durchsuchbare, filterbare, abrufbare und andere Zuordnungen enthält, die bestimmen, wie das Feld verwendet wird. Während der Indizierung führt der Indexer einen Crawlvorgang für die Datenquelle durch, kann optional Dokumente aufbrechen und Informationen extrahieren, serialisiert die Ergebnisse im JSON-Format und indiziert die Nutzlast basierend auf dem für Ihren Index definierten Schema.
skillsetName Erforderlich für die KI-Anreicherung. Name eines vorhandenen Skillsets, eins pro Indexer. Wie bei Datenquellen und Indizes ist ein Skillset eine unabhängige Definition, die Sie an einen Indexer anfügen. Sie können ein Skillset auch für einen anderen Indexer anpassen, aber für jeden Indexer kann jeweils nur ein Skillset verwendet werden.
schedule Optional, aber wird sofort ausgeführt, wenn nicht angegeben und nicht deaktiviert. Ein Zeitplan enthält interval (erforderlich) und startTime (optional). Weitere Informationen finden Sie unter Planen eines Indexers.

interval gibt an, wie oft der Indexer ausgeführt wird. Das kleinste zulässige Intervall beträgt fünf Minuten. Die längste Dauer ist ein Tag. Es muss als XSD-Wert „dayTimeDuration“ formatiert sein (eine eingeschränkte Teilmenge eines ISO 8601-Zeitwerts). Das Muster hierfür lautet: "P[nD][T[nH][nM]]". Beispiele: PT15M für alle 15 Minuten, PT2H für alle 2 Stunden.

startTime ist eine UTC-Datetime, wenn der Indexer mit der Ausführung beginnen soll.
deaktiviert Optional. Boolescher Wert, der angibt, ob der Indexer deaktiviert ist. Legen Sie diese Eigenschaft fest, wenn Sie eine Indexerdefinition erstellen möchten, ohne sie sofort auszuführen. Der Standardwert ist gleich „False“.
parameters Optional. Eigenschaften zum Ändern des Laufzeitverhaltens.

"batchSize" (ganze Zahl). Gibt die Anzahl von Elementen an, die aus einer Datenquelle gelesen und als einzelner Batch indiziert werden, um die Leistung zu verbessern. Der Standardwert ist quellspezifisch (1000 für Azure SQL Database und Azure Cosmos DB, 10 für Azure Blob Storage).

"maxFailedItems" (ganze Zahl). Gibt die Anzahl von Fehlern an, die toleriert werden sollen, bevor eine Indexerausführung als Fehler betrachtet wird. Standard ist "0". Legen Sie diese Option auf -1 fest, wenn Sie nicht möchten, dass der Indizierungsprozess durch Fehler beendet wird. Verwenden Sie Den Indexerstatus abrufen , um Informationen zu fehlerhaften Dokumenten abzurufen.

"maxFailedItemsPerBatch" (ganze Zahl). Gibt die Anzahl von Fehlern an, die in jedem Batch toleriert werden sollen, bevor eine Indexerausführung als Fehler betrachtet wird. Standard ist "0". Legen Sie diese Option auf -1 fest, wenn Sie nicht möchten, dass der Indizierungsprozess durch Fehler beendet wird.

"base64EncodeKey" (Boolescher Wert). Gibt an, ob Dokumentschlüssel codiert werden sollen, die ungültige Zeichen enthalten.

"configuration". Eigenschaften, die je nach Datenquelle variieren.

"executionEnvironment" (Zeichenfolge). Überschreibt die von internen Systemprozessen ausgewählte Ausführungsumgebung. Das explizite Festlegen der Ausführungsumgebung auf Private ist erforderlich, wenn Indexer über private Endpunktverbindungen auf externe Ressourcen zugreifen. Diese Einstellung befindet sich unter "configuration". Für die Datenerfassung gilt diese Einstellung nur für Dienste, die als Basic oder Standard (S1, S2, S3) bereitgestellt werden. Für die Verarbeitung von KI-Anreicherungsinhalten ist diese Einstellung nur für S2 und S3 gültig. Gültige Werte berücksichtigen die Groß-/Kleinschreibung nicht und bestehen aus [NULL oder nicht angegeben], Standard (Standard) oder Private.
fieldMappings Optional. Ordnet ein Quellfeld explizit einem Zielfeld im Suchindex zu. Wird verwendet, wenn Quell- und Zielfelder unterschiedliche Namen oder Typen haben oder wenn Sie eine Funktion angeben möchten. Ein fieldMappings Abschnitt enthält sourceFieldName (erforderlich, ein Feld in der zugrunde liegenden Datenquelle), targetFieldName (erforderlich, ein Feld in einem Index) und ein optionales mappingFunction Feld für die Codierungsausgabe. Eine Liste der unterstützten Funktionen und Beispiele finden Sie unter Feldzuordnungsfunktionen. Weitere allgemeine Informationen finden Sie unter Feldzuordnungen und -transformationen.
outputFieldMappings Erforderlich für eine Anreicherungspipeline. Ordnet die Ausgabe eines Skillsets einem Index oder einer Projektion zu. Ein outputFieldMappings Abschnitt enthält sourceFieldName (erforderlich, einen Knoten in einer Anreicherungsstruktur), targetFieldName (erforderlich, ein Feld in einem Index) und einen optionalen mappingFunction für die Codierungsausgabe. Eine Liste der unterstützten Funktionen und Beispiele finden Sie unter Feldzuordnungsfunktionen. Weitere allgemeine Informationen finden Sie unter Zuordnen von Ausgabefeldern aus einem Skillset.
encryptionKey Optional. Wird verwendet, um eine Indexerdefinition im Ruhezustand mit Ihren eigenen Schlüsseln zu verschlüsseln, die in Ihrem Azure-Key Vault verwaltet werden. Verfügbar für abrechenbare Suchdienste, die am oder nach dem 01.01.2019 erstellt wurden.

Ein encryptionKey Abschnitt enthält einen benutzerdefinierten keyVaultKeyName (erforderlich), einen systemgenerierten keyVaultKeyVersion (erforderlich) und einen keyVaultUri Schlüssel, der den Schlüssel bereitstellt (erforderlich, auch als DNS-Name bezeichnet). Ein Beispiel-URI kann "https://my-keyvault-name.vault.azure.net"" sein.

Optional können Sie angeben accessCredentials , ob Sie keine verwaltete Systemidentität verwenden. Eigenschaften von accessCredentials include applicationId (Microsoft Entra ID Anwendungs-ID, der Zugriffsberechtigungen für Ihre angegebene Azure-Key Vault erteilt wurden), und applicationSecret (Authentifizierungsschlüssel der registrierten Anwendung). Ein Beispiel im nächsten Abschnitt veranschaulicht die Syntax.

Blobkonfigurationsparameter

Mehrere Parameter gelten exklusiv für einen bestimmten Indexer, z.B. Azure-Blobindizierung.

Parameter Typ und zulässige Werte Verwendung
"parsingMode" String
"text"
"delimitedText"
"json"
"jsonArray"
"jsonLines"
Legen Sie diesen Parameter für Azure-Blobs auf text fest, um die Indizierungsleistung für Klartextdateien in Blobspeicher zu verbessern.
Legen Sie diesen Parameter für CSV-Blobs auf delimitedText fest, wenn es sich bei Blobs um reine CSV-Dateien handelt.
Legen Sie für JSON-Blobs auf fest json , um strukturierte Inhalte zu extrahieren oder jsonArray einzelne Elemente eines Arrays als separate Dokumente in Azure AI Search zu extrahieren. Verwenden Sie jsonLines , um einzelne JSON-Entitäten zu extrahieren, die durch eine neue Zeile getrennt sind, als separate Dokumente in Azure AI Search.
"excludedFileNameExtensions" String
Liste mit Kommas als Trennzeichen
Benutzerdefiniert
Ignorieren Sie für Azure-Blobs alle Dateitypen in der Liste. Beispielsweise können Sie „.png, .png, .mp4“ ausschließen, damit diese Dateien bei der Indizierung übersprungen werden.
"indexedFileNameExtensions" String
Liste mit Kommas als Trennzeichen
Benutzerdefiniert
Wählen Sie für Azure-Blobs Blobs aus, wenn die Dateierweiterung in der Liste enthalten ist. Beispielsweise können Sie die Indizierung auf spezifische Anwendungsdateien wie „.docx, .pptx, .msg“ beschränken, um diese Dateitypen explizit einzubeziehen.
"failOnUnsupportedContentType" Boolean
true
false (Standard)
Legen Sie diesen Parameter für Azure-Blobs auf false fest, falls Sie die Indizierung fortsetzen möchten, wenn ein nicht unterstützter Inhaltstyp erkannt wird und Ihnen nicht alle Inhaltstypen (Dateierweiterungen) vorher bekannt sind.
"failOnUnprocessableDocument" Boolean
true
false (Standard)
Legen Sie diesen Parameter für Azure-Blobs auf false fest, falls Sie die Indizierung fortsetzen möchten, wenn die Indizierung für ein Dokument fehlschlägt.
"indexStorageMetadataOnly
ForOversizedDocuments"
Boolean true
false (Standard)
Legen Sie diese Eigenschaft für Azure-Blobs auf true fest, um Speichermetadaten für Blobinhalt, der zu groß zum Verarbeiten ist, trotzdem zu indizieren. Zu große Blobs werden standardmäßig als Fehler behandelt. Grenzwerte für die Blobgröße finden Sie unter Dienstgrenzwerte.
"delimitedTextHeaders" String
Liste mit Kommas als Trennzeichen
Benutzerdefiniert
Gibt für CSV-Blobs eine durch Trennzeichen getrennte Liste von Spaltenheadern an, die zum Zuordnen von Quellfeldern zu Zielfeldern in einem Index nützlich ist.
"delimitedTextDelimiter" String
einzelnes Zeichen
Benutzerdefiniert
Für CSV-Blobs gibt das Zeilenendetrennzeichen für CSV-Dateien an, bei denen jede Zeile ein neues Dokument startet (z. B "|". ).
"firstLineContainsHeaders" Boolean
true (Standardwert)
false
Gibt für CSV-Blobs an, dass die erste Zeile (nicht leer) jedes Blobs Header enthält.
"documentRoot" String
Benutzerdefinierter Pfad
Für JSON-Arrays können Sie bei einem strukturierten oder teilweise strukturierten Dokument mithilfe dieser Eigenschaft einen Pfad zum Array angeben.
"dataToExtract" String
"storageMetadata"
"allMetadata"
"contentAndMetadata" (Standard)
Für Azure-Blobs:
Legen Sie diesen Parameter auf "storageMetadata" fest, um nur die Standardblobeigenschaften und vom Benutzer angegebenen Metadaten zu indizieren.
Legen Sie diesen Parameter auf "allMetadata" fest, um Metadaten zu extrahieren, die vom Azure-Blobspeichersystem bereitgestellt werden, und die für den Inhaltstyp spezifischen Metadaten (z.B. Metadaten, die nur für PNG-Dateien eindeutig sind) zu indizieren.
Legen Sie diesen Parameter auf "contentAndMetadata" fest, um alle Metadaten und Textinhalte aus jedem Blob zu extrahieren.

Wenn "imageAction"für die Bildanalyse in der KI-Anreicherung ein anderer Wert als "none"festgelegt ist, teilt die "dataToExtract" Einstellung dem Indexer mit, welche Daten aus Bildinhalten extrahiert werden sollen. Dies gilt für eingebetteten Bildinhalt in einer PDF-Datei oder eine andere Anwendung oder für Bilddateien, z.B. .jpg und .png, in Azure-Blobs.
"imageAction" String
"none"
"generateNormalizedImages"
"generateNormalizedImagePerPage"
Legen Sie diesen Parameter für Azure-Blobs auf "none" fest, um eingebettete Bilder oder Bilddateien im Dataset zu ignorieren. Dies ist die Standardoption.

Legen Sie für die Bildanalyse in der KI-Anreicherung auf fest"generateNormalizedImages" , um Text aus Bildern zu extrahieren (z. B. das Wort "Stop" aus einem Verkehrsstoppzeichen), und betten Sie es als Teil des Inhaltsfelds ein. Während der Bildanalyse erstellt der Indexer ein Array mit normalisierten Bildern als Teil des Vorgangs, mit dem Dokumente aufgebrochen werden, und bettet die generierten Informationen in das Inhaltsfeld ein. Für diese Aktion ist es erforderlich, "dataToExtract" auf "contentAndMetadata" festzulegen. Ein normalisiertes Bild bezieht sich auf eine zusätzliche Verarbeitung, die zu einer einheitlichen Bildausgabe führt. Für die Ausgabe wird die Größe angepasst, und sie wird gedreht, um das einheitliche Rendern zu fördern, wenn Sie Bilder in visuelle Suchergebnisse einbinden (z.B. Fotos gleicher Größe für ein Graphsteuerelement wie in der JFK-Demo). Diese Informationen werden bei Verwendung dieser Option für jedes Bild generiert.

Wenn Sie diesen Parameter auf "generateNormalizedImagePerPage" festlegen, werden PDF-Dateien anders behandelt. Anstatt eingebettete Bilder zu extrahieren, wird jede Seite als Bild gerendert und entsprechend normalisiert. Dieser Prozess pro Seite wird voraussichtlich viel länger dauern als "generateNormalizedImages". Nicht-PDF-Dateitypen werden genauso behandelt, als ob der Parameter auf "generateNormalizedImages" festgelegt worden wäre.

Das Festlegen der "imageAction" Konfiguration auf einen anderen "none" Wert erfordert, dass auch ein Skillset an diesen Indexer angefügt wird, und es kann sich um einen Prozess mit geringer Leistung handeln.
"normalizedImageMaxWidth"
"normalizedImageMaxHeight"
Eine beliebige ganze Zahl zwischen 50-10000 Die maximale Breite bzw. Höhe (in Pixel) für normalisierte Bilder, die generiert werden, wenn ein "imageAction" festgelegt wird. Der Standardwert ist „2000“.

Der Standardwert von 2.000 Pixeln für die maximale Breite und Höhe der normalisierten Bilder basiert auf der maximal unterstützten Größe der OCR-Qualifikation und der Bildanalysequalifikation. Die OCR-Qualifikation unterstützt eine maximale Breite und Höhe von 4.200 für nicht englische Sprachen und 10.000 für Englisch. Wenn Sie die maximalen Grenzwerte erhöhen, können bei größeren Images je nach Skillsetdefinition und Sprache der Dokumente Fehler bei der Verarbeitung auftreten.
"allowSkillsetToReadFileData" Boolean
true
false (Standard)
Wenn Sie den "allowSkillsetToReadFileData" Parameter auf festlegen, wird ein Pfad /document/file_data erstellt, bei dem es sich um true ein Objekt handelt, das die ursprünglichen Dateidaten darstellt, die aus Ihrer Blobdatenquelle heruntergeladen wurden. Dadurch können Sie die ursprünglichen Dateidaten an einen benutzerdefinierten Skill zur Verarbeitung in der Anreicherungspipeline oder an den Skill Dokumentextraktion übergeben. Das generierte Objekt wird wie folgt definiert: { "$type": "file", "data": "BASE64 encoded string of the file" }

Das Festlegen des "allowSkillsetToReadFileData" Parameters auf true erfordert, dass ein Skillset an diesen Indexer angefügt wird und dass der "parsingMode" Parameter auf "default"oder "text""json"festgelegt ist.
"pdfTextRotationAlgorithm" String
"none" (Standard)
"detectAngles"
Wenn Sie den "pdfTextRotationAlgorithm" Parameter auf festlegen, "detectAngles" können Sie eine bessere und lesbarere Textextraktion aus PDF-Dateien mit gedrehten Texten erstellen. Beachten Sie, dass es bei verwendung dieses Parameters zu einer kleinen Leistungseinbuße kommen kann. Dieser Parameter gilt nur für PDF-Dateien und nur für PDFs mit eingebettetem Text. Wenn der gedrehte Text in einem eingebetteten Bild in der PDF-Datei angezeigt wird, gilt dieser Parameter nicht.

Das Festlegen des "pdfTextRotationAlgorithm" Parameters auf "detectAngles" erfordert, dass der "parsingMode" Parameter auf "default"festgelegt ist.

Azure Cosmos DB-Konfigurationsparameter

Die folgenden Parameter sind spezifisch für Cosmos DB-Indexer.

Parameter Typ und zulässige Werte Verbrauch
"assumeOrderByHighWaterMarkColumn" Boolean Legen Sie für Cosmos DB-Indexer mit SQL-API diesen Parameter fest, um Cosmos DB einen Hinweis zu geben, dass die Abfrage, die zum Zurückgeben von Dokumenten für die Indizierung verwendet wird, tatsächlich nach der _ts Spalte sortiert ist. Wenn Sie diesen Parameter festlegen, erhalten Sie bessere Ergebnisse für inkrementelle Indizierungsszenarien.

Azure SQL Konfigurationsparameter

Die folgenden Parameter gelten spezifisch für Azure SQL-Datenbank.

Parameter Typ und zulässige Werte Verwendung
"queryTimeout" String
"hh:mm:ss"
"00:05:00"
Legen Sie diesen Parameter für Azure SQL-Datenbank fest, um für das Zeitlimit einen höheren Wert als den Standardwert von fünf Minuten anzugeben.
"convertHighWaterMarkToRowVersion" Boolean Legen Sie diesen Parameter auf "true" fest, um den rowversion-Datentyp für die Spalte mit hohem Wasserzeichen zu verwenden. Wenn diese Eigenschaft auf true festgelegt ist, subtrahiert der Indexer einen wert aus dem rowversion-Wert, bevor der Indexer ausgeführt wird. Dies geschieht, da Ansichten mit 1:n-Joins möglicherweise Zeilen mit doppelten Zeilenversionswerten enthalten. Durch Subtraktion von eins wird sichergestellt, dass die Indexerabfrage diese Zeilen nicht übergeht.
"disableOrderByHighWaterMarkColumn" Boolean Legen Sie diesen Parameter auf "true" fest, wenn Sie das ORDER BY-Verhalten in der für die Änderungserkennung verwendeten Abfrage deaktivieren möchten. Wenn Sie die Änderungserkennungsrichtlinie für hohe Wasserzeichen verwenden, verwendet der Indexer WHERE- und ORDER BY-Klauseln, um nachzuverfolgen, welche Zeilen indiziert werden müssen (WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]). Dieser Parameter deaktiviert das ORDER BY-Verhalten. Die Indizierung wird schneller abgeschlossen, aber der Kompromiss besteht darin, dass der gesamte Indexerauftrag vollständig wiederholt werden muss, wenn der Indexer aus irgendeinem Grund unterbrochen wird.

Antwort

Bei erfolgreicher Anforderung: "201 Erstellt".

Beispiele

Beispiel: Indexer mit Zeitplan und generischen Parametern

Erstellt einen Indexer, der Daten aus der Tabelle kopiert, auf die von der ordersds Datenquelle verwiesen wird, nach einem Zeitplan, der orders am 1. Januar 2021 UTC beginnt und stündlich ausgeführt wird. Die Aufrufe des Indexers sind erfolgreich, wenn nicht mehr als fünf zu indizierende Elemente in jedem Batch fehlschlagen und insgesamt nicht mehr als zehn zu indizierende Elemente fehlschlagen.

{
    "name" : "myindexer",  
    "description" : "a cool indexer",  
    "dataSourceName" : "ordersds",  
    "targetIndexName" : "orders",  
    "schedule" : { "interval" : "PT1H", "startTime" : "2021-01-01T00:00:00Z" },  
    "parameters" : { "maxFailedItems" : 10, "maxFailedItemsPerBatch" : 5 }  
}

Hinweis

Wenn ein Indexer auf einen bestimmten Zeitplan festgelegt ist, im gleichen Dokument bei erneuter Ausführung aber immer wieder ein Fehler auftritt, wird der Indexer in selteneren Intervallen ausgeführt (bis hin zum Maximum von mindestens einmal in 24 Stunden), bis die Ausführung fehlerfrei verläuft. Wenn Sie glauben, dass Sie das Problem behoben haben, das den Indexer zu einem bestimmten Zeitpunkt blockiert hat, können Sie eine Zurücksetzung des Indexers durchführen, gefolgt von einer Bedarfsausführung, und wenn dies erfolgreich ist, kehrt der Indexer wieder zu seinem festgelegten Zeitplanintervall zurück.

Beispiel: Indexer mit Blobparametern

Ein Indexer kann optional Konfigurationsparameter verwenden, mit denen das Laufzeitverhalten geändert wird. Konfigurationsparameter sind für die Indexeranforderung durch Trennzeichen getrennt und für einen Datenquellentyp spezifisch. Die folgenden Konfigurationsparameter enthalten Anweisungen zum Indizieren von Blobs.

  {
    "name" : "my-blob-indexer-for-cognitive-search",
    ... other indexer properties
    "parameters" : 
      { 
      "maxFailedItems" : "15", 
      "batchSize" : "100", 
      "configuration" : 
          { 
          "parsingMode" : "json", 
          "indexedFileNameExtensions" : ".json, .jpg, .png",
          "imageAction" : "generateNormalizedImages",
          "dataToExtract" : "contentAndMetadata" ,
          "executionEnvironment": "Standard"
          } 
      }
  }

Beispiel: Indexer mit Feldzuordnungen

Ordnen Sie das Feld _id einer Quelltabelle einem "id" Feld in einem Suchindex zu. Azure AI Search lässt nicht zu, dass ein Feldname mit einem Unterstrich beginnt. Eine Feldzuordnung kann Namensabweichungen auflösen. Beachten Sie bei Quell- und Zielfeldnamen die Groß-und Kleinschreibung. Weitere Informationen finden Sie unter Feldzuordnungen und Transformationen.

"fieldMappings" : [
    { "sourceFieldName" : "_id", "targetFieldName" : "id" },
    { "sourceFieldName" : "_timestamp", "targetFieldName" : "timestamp" }
]

Beispiel: Indexer mit KI-Anreicherung

Veranschaulicht eine KI-Anreicherung, die durch den Verweis auf ein skillset und outputFieldMappingsangezeigt wird. Skillsets sind allgemeine Ressourcen, die separat definiert werden. Dieses Beispiel ist eine Abkürzung der Indexerdefinition im Tutorial zur KI-Anreicherung.

{
  "name":"demoindexer",	
  "dataSourceName" : "demodata",
  "targetIndexName" : "demoindex",
  "skillsetName" : "demoskillset",
  "fieldMappings" : [
    {
        "sourceFieldName" : "content",
        "targetFieldName" : "content"
    }
   ],
  "outputFieldMappings" : 
  [
    {
        "sourceFieldName" : "/document/organizations", 
        "targetFieldName" : "organizations"
    },
  ],
  "parameters":
  {
  	"maxFailedItems":-1,
  	"configuration": 
    {
    "dataToExtract": "contentAndMetadata",
    "imageAction": "generateNormalizedImages"
    }
  }
}

Beispiel: Indexer mit Skillset- und Ausgabefeldzuordnungen

In KI-Anreicherungsszenarien , in denen ein Skillset an einen Indexer gebunden ist, müssen Sie hinzufügen outputFieldMappings , um jede Ausgabe eines Anreicherungsschritts, der Inhalte bereitstellt, einem durchsuchbaren Feld im Index zuzuordnen. Der sourceFieldName ist ein Knoten in einer Anreicherungsstruktur. Es kann sich um eine zusammengesetzte Struktur sein, die während der Anreicherung aus zwei separaten Feldern im Quelldokument erstellt wird. Das targetFieldName ist ein Feld in einem Suchindex. Weitere Informationen finden Sie unter Zuordnen von Ausgabefeldern aus einem Skillset.

"outputFieldMappings" : [
      {
        "sourceFieldName" : "/document/organizations", 
        "targetFieldName" : "organizations"
      },
      {
        "sourceFieldName" : "/document/pages/*/keyPhrases/*", 
        "targetFieldName" : "keyphrases"
      },
      {
          "sourceFieldName": "/document/languageCode",
          "targetFieldName": "language",
          "mappingFunction": null
      }      
  ]

Beispiel: Verschlüsselungsschlüssel

Verschlüsselungsschlüssel sind kundenseitig verwaltete Schlüssel, die für die zusätzliche Verschlüsselung verwendet werden. Weitere Informationen finden Sie unter Verschlüsselung mithilfe von kundenseitig verwalteten Schlüsseln in Azure Key Vault.

{
    "name" : "myindexer",  
    "description" : "a cool indexer",  
    "dataSourceName" : "ordersds",  
    "targetIndexName" : "orders",  
    "schedule" : { "interval" : "PT1H", "startTime" : "2021-01-01T00:00:00Z" },  
    "parameters" : { "maxFailedItems" : 10, "maxFailedItemsPerBatch" : 5 },
    "encryptionKey": (optional) { 
      "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
      "keyVaultKeyVersion": "Version of the Azure Key Vault key",
      "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
      "accessCredentials": (optional, only if not using managed system identity) {
        "applicationId": "Microsoft Entra ID application ID that was granted access permissions to your specified Azure Key Vault",
        "applicationSecret": "Authentication key of the registered application)"}
      }
}

Weitere Informationen