Index erstellen (Azure AI Search-REST-API)

Ein Index ist das primäre Mittel zum Organisieren und Durchsuchen von Dokumenten in Azure AI Search, ähnlich wie eine Tabelle Datensätze in einer Datenbank organisiert. Jeder Index verfügt über eine Sammlung von Dokumenten, die alle dem Indexschema entsprechen (Feldnamen, Datentypen und Attribute), aber Indizes geben auch zusätzliche Konstrukte (Vorschlagsgeber, Bewertungsprofile und CORS-Konfiguration) an, die andere Suchverhalten definieren.

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

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

Alternativ können Sie mit PUT den Indexnamen für den URI angeben.

PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
  Content-Type: application/json
  api-key: [admin key]

HTTPS ist für alle Dienstanforderungen erforderlich. Wenn der Index nicht vorhanden ist, wird er erstellt. Wenn sie bereits vorhanden ist, wird sie auf die neue Definition aktualisiert.

Durch das Erstellen eines Indexes werden das Schema und die Metadaten eingerichtet. Gefüllt wird der Index in einem separaten Vorgang. Für diesen Schritt können Sie einen Indexer (siehe Indexervorgänge, verfügbar für unterstützte Datenquellen) oder ein Hinzufügen, Aktualisieren oder Löschen von Dokumenten verwenden. Die invertierten Indizes werden generiert, wenn die Dokumente veröffentlicht werden.

Hinweis

Die maximale Anzahl von Indizes, die Sie erstellen können, variiert je nach Preisstufe. Weitere Informationen finden Sie unter Diensteinschränkungen.

URI-Parameter

Parameter BESCHREIBUNG
Dienstname Erforderlich. Legen Sie dies auf den eindeutigen, benutzerdefinierten Namen Ihres Suchdiensts fest.
Indexname Erforderlich für den URI, wenn PUT verwendet wird. Der Name muss klein geschrieben sein, mit einem Buchstaben oder einer Zahl beginnen, keine Schrägstriche oder Punkte aufweisen und weniger als 128 Zeichen lang sein. Der Anfang des Namens muss mit einem Buchstaben oder einer Zahl beginnen, aber der Rest des Namens kann beliebige Buchstaben, Zahlen, Unterstriche und Bindestriche enthalten, solange die Unterstriche und 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 ein Bearertoken für die Anforderung bereitgestellt wird, andernfalls ist ein Schlüssel erforderlich. Erstellen von Anforderungen muss einen api-key Header enthalten, der auf Ihren Administratorschlüssel (im Gegensatz zu einem Abfrageschlüssel) festgelegt ist. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Azure AI Search mithilfe der Schlüsselauthentifizierung .

Anforderungstext

Der Anforderungstext enthält eine Schemadefinition mit der Liste der Datenfelder in Dokumenten, die in diesen Index eingelesen werden.

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

{  
  "name": (optional on PUT; required on POST) "Name of the index",  
  "fields": [  
    {  
      "name": "name_of_field",  
      "type": "Edm.String | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint | Edm.ComplexType | Collection(Edm.String) | Collection(Edm.Int32) | Collection(Edm.Int64) | Collection(Edm.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",  
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),  
      "filterable": true (default) | false,  
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),  
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),  
      "key": true | false (default, only Edm.String fields can be keys, enable on one field only),  
      "retrievable": true (default) | false,  
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "synonymMaps": [ "name_of_synonym_map" ] (optional, only one synonym map per field is currently supported),
      "fields" : [ ... ] (optional, a list of sub-fields if this is a field of type Edm.ComplexType or Collection(Edm.ComplexType). Must be null or empty for simple fields.)
    }
  ],
  "similarity": (optional) { },
  "suggesters": (optional) [ ... ],  
  "scoringProfiles": (optional) [ ... ],  
  "analyzers":(optional) [ ... ],
  "charFilters":(optional) [ ... ],
  "tokenizers":(optional) [ ... ],
  "tokenFilters":(optional) [ ... ],
  "defaultScoringProfile": (optional) "Name of a custom scoring profile to use as the default",  
  "corsOptions": (optional) { },
  "encryptionKey":(optional) { }  
}  

Die Anforderung enthält die folgenden Eigenschaften:

Eigenschaft BESCHREIBUNG
name Erforderlich. Der Name des Index. Ein Indexname darf nur Kleinbuchstaben, Ziffern oder Bindestriche enthalten, kann nicht mit Bindestrichen beginnen oder enden und ist auf 128 Zeichen beschränkt.
fields Erforderlich. Eine Sammlung von Feldern, die in diesen Index eingespeist werden, einschließlich Name, Datentyp und Attributen, die zulässige Aktionen für dieses Feld definieren. Datentypen entsprechen dem Entity Data Model (EDM). Weitere Informationen finden Sie unter Unterstützte Datentypen. Es muss ein Feld in der Auflistung vorhanden sein, das als Schlüsselfeld angegeben wird. Dieses muss ein Zeichenfolgefeld sein. Dieses Feld stellt den eindeutigen Bezeichner (manchmal auch als Dokument-ID bezeichnet) für jedes mit dem Index gespeicherte Dokument dar. Bei Dokumentschlüsseln wird die Groß-/Kleinschreibung beachtet. Beispielsweise gilt ein Dokument mit dem Schlüssel "abc" als anders als ein Dokument mit dem Schlüssel "ABC".
Ähnlichkeit Optional. Legen Sie diese Eigenschaft für Dienste, die vor dem 15. Juli 2020 erstellt wurden, auf die Verwendung des BM25-Rankingalgorithmus fest. Gültige Werte sind "#Microsoft.Azure.Search.ClassicSimilarity" oder "#Microsoft.Azure.Search.BM25Similarity". API-Versionen, die diese Eigenschaft unterstützen, sind 2020-06-30 und 2019-05-06-Preview. Weitere Informationen finden Sie unter Rangfolgen von Algorithmen in Azure AI Search.
Vorschlagser Optional. Wird für automatisch abgeschlossene Abfragen oder vorgeschlagene Suchergebnisse verwendet, eine pro Index. Es handelt sich um eine Datenstruktur, in der Präfixe für den Abgleich für Teilabfragen wie autovervollständigen und Vorschläge gespeichert werden. name Besteht aus Feldern, die vorschlagsfähig sind und Inhalte für automatisch abgeschlossene Abfragen und vorgeschlagene Ergebnisse bereitstellen. searchMode ist erforderlich und immer auf analyzingInfixMatchingfestgelegt. Es gibt an, dass der Abgleich für einen beliebigen Ausdruck in der Abfragezeichenfolge erfolgt.
scoringProfiles Optional. Wird für die benutzerdefinierte Bewertung der Suchbewertung verwendet. Legen Sie fest defaultScoringProfile , dass ein benutzerdefiniertes Profil als Standard verwendet wird, das immer dann aufgerufen wird, wenn in der Abfragezeichenfolge kein benutzerdefiniertes Profil angegeben wird. Weitere Informationen zu Elementen finden Sie unter Hinzufügen von Bewertungsprofilen zu einem Suchindex und im Beispiel im nächsten Abschnitt.
analyzers, charFilters, tokenizers, tokenFilters Optional. Geben Sie diese Abschnitte des Indexes an, wenn Sie benutzerdefinierte Analysetools definieren. Standardmäßig sind diese Abschnitte NULL.
defaultScoringProfile Optional. Name eines benutzerdefinierten Bewertungsprofils, das das Standardbewertungsverhalten überschreibt.
corsOptions Optional. Clientseitiges JavaScript kann standardmäßig keine APIs aufrufen, da der Browser alle ursprungsübergreifenden Anforderungen verhindert. Um ursprungsübergreifende Abfragen für Ihren Index zu ermöglichen, aktivieren Sie CORS (Cross-Origin Resource Sharing), indem Sie das Attribut corsOptions festlegen. Aus Sicherheitsgründen wird CORS nur von Abfrage-APIs unterstützt. Der corsOptions Abschnitt enthält Folgendes:
allowedOrigins
(Erforderlich) Eine durch Trennzeichen getrennte Liste der Ursprünge, die Zugriff auf Ihren Index erhalten, wobei jeder Ursprung in der Regel die Form protocol://< fully qualified-domain-name>:<port> hat (obwohl der <Port> häufig weggelassen wird). Das heißt, dass dem JavaScript-Code von diesen Ursprüngen erlaubt wird, Ihren Index abzufragen (vorausgesetzt, der richtige api-key wird angegeben). Wenn Sie den Zugriff auf alle Ursprünge zulassen möchten, geben Sie * als einzelnes Element im allowedOrigins Array an. Dies wird nicht für die Produktion empfohlen, kann aber für die Entwicklung oder das Debuggen nützlich sein.

maxAgeInSeconds (Optional) Browser verwenden diesen Wert, um die Dauer (in Sekunden) zum Zwischenspeichern von CORS-Preflight-Antworten zu bestimmen. Dies muss eine positive ganze Zahl sein. Mit dem Wert steigt auch die Leistung, aber es dauert auch länger, bis CORS-Richtlinienänderungen in Kraft treten. Wenn sie nicht festgelegt ist, wird eine Standarddauer von 5 Minuten verwendet.
encryptionKey Optional. Wird verwendet, um eine Synonymzuordnung 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 (erforderlich, der auch als DNS-Name bezeichnet wird). Ein Beispiel-URI kann "https://my-keyvault-name.vault.azure.net"" sein.

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

Felddefinitionen

Die folgenden Attribute können beim Erstellen eines Indexes für ein Feld festgelegt werden.

attribute BESCHREIBUNG
name Erforderlich. Legt den Namen des Felds fest, das innerhalb der Fields-Auflistung des Index- oder übergeordneten Felds eindeutig sein muss.
type Erforderlich. Legt den Datentyp für das Feld fest. Felder können einfach oder komplex sein. Einfache Felder sind von primitiven Typen, z Edm.String . B. für Text oder Edm.Int32 für ganze Zahlen. Komplexe Felder können Unterfelder enthalten, die selbst entweder einfach oder komplex sind. Auf diese Weise können Sie Objekte und Arrays von Objekten modellieren, wodurch Sie die meisten JSON-Objektstrukturen in Ihren Index hochladen können. Eine vollständige Liste der unterstützten Typen finden Sie unter Unterstützte Datentypen (Azure AI Search).
Schlüssel Erforderlich. Legen Sie dieses Attribut auf true fest, um anzugeben, dass die Werte eines Felds Dokumente im Index eindeutig identifizieren. Die maximale Länge von Werten in einem Schlüsselfeld beträgt 1024 Zeichen. Es muss genau ein Feld der obersten Ebene in jedem Index als Schlüsselfeld ausgewählt werden, und es muss vom Typ Edm.Stringsein. Der Standardwert ist false für einfache Felder und null für komplexe Felder.

Schlüsselfelder können verwendet werden, um Dokumente direkt nachzuschlagen und bestimmte Dokumente zu aktualisieren oder zu löschen. Die Werte von Schlüsselfeldern werden beim Nachschlagen oder Indizieren von Dokumenten auf eine weise behandelt, bei der die Groß-/Kleinschreibung beachtet wird. Weitere Informationen finden Sie unter Lookup Document (Azure AI Search REST API) und Hinzufügen, Aktualisieren oder Löschen von Dokumenten (Azure AI Search REST API).
retrievable Gibt an, ob das Feld in einem Suchergebnis zurückgegeben werden kann. Legen Sie dieses Attribut auf fest false , wenn Sie ein Feld (z. B. Margin) als Filter-, Sortier- oder Bewertungsmechanismus verwenden möchten, das Feld aber nicht für den Endbenutzer sichtbar sein soll. Dieses Attribut muss true für Schlüsselfelder und für komplexe Felder sein null . Dieses Attribut kann für vorhandene Felder geändert werden. Das Festlegen von abrufbar auf führt nicht zu true einer Erhöhung der Indexspeicheranforderungen. Der Standardwert ist true für einfache Felder und null für komplexe Felder.
searchable Gibt an, ob das Feld volltextsuchbar ist und in Suchabfragen referenziert werden kann. Dies bedeutet, dass es lexikalischen Analysen unterzogen wird, z. B. Wortbruch während der Indizierung. Wenn Sie ein durchsuchbares Feld auf einen Wert wie "Sonniger Tag" festlegen, wird es intern normalisiert und in die einzelnen Token "sunny" und "day" aufgeteilt. Dies ermöglicht die Volltextsuche nach diesen Begriffen. Felder vom Typ Edm.String oder Collection(Edm.String) sind standardmäßig durchsuchbar. Dieses Attribut muss false für einfache Felder anderer Nicht-Zeichenfolgen-Datentypen und für komplexe Felder gelten null .

Ein durchsuchbares Feld beansprucht zusätzlichen Speicherplatz in Ihrem Index, da Azure KI Search den Inhalt dieser Felder verarbeitet und sie für eine leistungsfähige Suche in hilfsfähigen Datenstrukturen anordnet. Wenn Sie Speicherplatz im Index sparen möchten und kein Feld in Suchvorgänge einbezogen werden muss, legen Sie durchsuchbar auf falsefest. Weitere Informationen finden Sie unter Funktionsweise der Volltextsuche in Azure AI Search .
filterable Gibt an, ob in $filter Abfragen auf das Feld verwiesen werden soll. Filterbar unterscheidet sich von durchsuchbar in der Behandlung von Zeichenfolgen. Felder vom Typ Edm.String oder Collection(Edm.String) , die gefiltert werden können, werden nicht lexikalisch analysiert, sodass Vergleiche nur für genaue Übereinstimmungen gelten. Wenn Sie z. B. ein solches Feld f auf "Sonniger Tag" festlegen, $filter=f eq 'sunny' findet keine Übereinstimmungen, wird aber $filter=f eq 'Sunny day' . Dieses Attribut muss für komplexe Felder sein null . Der Standardwert ist true für einfache Felder und null für komplexe Felder. Um die Indexgröße zu reduzieren, legen Sie dieses Attribut für false Felder, nach denen Sie nicht filtern möchten, auf fest.
sortable Gibt an, ob in Ausdrücken auf das Feld verwiesen $orderby werden soll. Standardmäßig sortiert Azure KI Search Ergebnisse nach Bewertung, aber in vielen Umgebungen möchten Benutzer nach Feldern in den Dokumenten sortieren. Ein einfaches Feld kann nur sortiert werden, wenn es einwertig ist (es hat einen einzelnen Wert im Bereich des übergeordneten Dokuments).

Einfache Sammlungsfelder können nicht sortiert werden, da sie mehrwertig sind. Einfache Unterfelder komplexer Sammlungen sind ebenfalls mehrwertig und können daher nicht sortiert werden. Dies gilt unabhängig davon, ob es sich um ein unmittelbares übergeordnetes Feld oder ein Vorgängerfeld handelt, das die komplexe Auflistung ist. Komplexe Felder können nicht sortierbar sein, und das sortierbare Attribut muss für solche Felder sein null . Die Standardeinstellung für sortierbar ist true für einwertige einfache Felder, false für mehrwertige einfache Felder und null für komplexe Felder.
facetable Gibt an, ob in Facetabfragen auf das Feld verwiesen werden soll. Wird in der Regel in einer Präsentation von Suchergebnissen verwendet, die die Trefferanzahl nach Kategorie enthält (z. B. suchen Sie nach Digitalkameras und sehen Sie Treffer nach Marke, nach Megapixeln, nach Preis usw.). Dieses Attribut muss für komplexe Felder sein null . Felder vom Typ Edm.GeographyPoint oder Collection(Edm.GeographyPoint) können nicht facetable sein. Der Standardwert gilt true für alle anderen einfachen Felder. Um die Indexgröße zu reduzieren, legen Sie dieses Attribut für false Felder, für die Sie keine Facettierung ausführen, auf fest.
Analyzer Legt das lexikalische Analysetool für die Tokenisierung von Zeichenfolgen bei Indizierungs- und Abfragevorgängen fest. Gültige Werte für diese Eigenschaft sind Sprachanalysetools, integrierte Analysetools und benutzerdefinierte Analysetools. Der Standardwert lautet standard.lucene. Dieses Attribut kann nur mit durchsuchbaren Zeichenfolgenfeldern verwendet werden und kann nicht zusammen mit searchAnalyzer oder indexAnalyzer festgelegt werden. Nachdem das Analysetool ausgewählt und das Feld im Index erstellt wurde, kann es für das Feld nicht mehr geändert werden. Muss für komplexe Felder seinnull.
searchAnalyzer Legen Sie diese Eigenschaft in Verbindung mit indexAnalyzer fest, um verschiedene lexikalische Analysetools für die Indizierung und Abfragen anzugeben. Wenn Sie diese Eigenschaft verwenden, legen Sie analyzer auf fest null , und stellen Sie sicher, dass indexAnalyzer auf einen zulässigen Wert festgelegt ist. Gültige Werte für diese Eigenschaft sind integrierte Analysetools und benutzerdefinierte Analysetools. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Das Suchanalysetool kann für ein vorhandenes Feld aktualisiert werden, da es nur zur Abfragezeit verwendet wird. Muss für komplexe Felder seinnull.
indexAnalyzer Legen Sie diese Eigenschaft in Verbindung mit searchAnalyzer fest, um verschiedene lexikalische Analysetools für die Indizierung und Abfragen anzugeben. Wenn Sie diese Eigenschaft verwenden, legen Sie analyzer auf fest null , und stellen Sie sicher, dass searchAnalyzer auf einen zulässigen Wert festgelegt ist. Gültige Werte für diese Eigenschaft sind integrierte Analysetools und benutzerdefinierte Analysetools. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Nachdem das Indexanalysetool ausgewählt wurde, kann es für das Feld nicht mehr geändert werden. Muss für komplexe Felder seinnull.
synonymMaps Eine Liste der Namen von Synonymzuordnungen, die diesem Feld zugeordnet werden sollen. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Derzeit wird nur eine Synonymzuordnung pro Feld unterstützt. Durch das Zuweisen einer Synonymzuordnung zu einem Feld wird sichergestellt, dass Abfragebegriffe, die auf dieses Feld abzielen, zur Abfragezeit mithilfe der Regeln in der Synonymzuordnung erweitert werden. Dieses Attribut kann für vorhandene Felder geändert werden. Muss oder eine leere Auflistung für komplexe Felder sein null .
fields Eine Liste von Unterfeldern, wenn es sich um ein Feld vom Typ Edm.ComplexType oder handelt Collection(Edm.ComplexType). Muss für einfache Felder leer sein null . Weitere Informationen zur Verwendung von Unterfeldern finden Sie unter Modellieren komplexer Datentypen in Azure AI Search .

Hinweis

Felder vom Typ Edm.String , die filterbar, sortierbar oder facetable sind, können maximal 32 KB lang sein. Dies liegt daran, dass Werte solcher Felder als einzelner Suchbegriff behandelt werden und die maximale Länge eines Begriffs in Azure AI Search 32 KB beträgt. Wenn Sie mehr Text als diesen in einem einzelnen Zeichenfolgenfeld speichern müssen, müssen Sie in Ihrer Indexdefinition filterbar, sortierbar und facetable explizit auf false festlegen.

Das Festlegen eines Felds als durchsuchbar, filterbar, sortierbar oder facetable hat Auswirkungen auf die Indexgröße und Abfrageleistung. Legen Sie diese Attribute nicht für Felder fest, auf die in Abfrageausdrücken nicht verwiesen werden soll.

Wenn ein Feld nicht als durchsuchbar, filterbar, sortierbar oder facetable festgelegt ist, kann in keinem Abfrageausdruck auf das Feld verwiesen werden. Dies ist nützlich für Felder, die nicht in Abfragen verwendet werden, aber in Suchergebnissen benötigt werden.

Hinweis

Die maximale Anzahl von Indizes, die Sie erstellen können, variiert je nach Tarif. Weitere Informationen finden Sie unter Diensteinschränkungen.

Antwort

Bei einer erfolgreichen Anforderung wird der Statuscode „201 – erstellt“ angezeigt.

Standardmäßig enthält der Antworttext den JSON-Code für die Indexdefinition. Wenn der Prefer Anforderungsheader jedoch auf return=minimalfestgelegt ist, ist der Antworttext leer, und der Erfolg status Code lautet "204 No Content" anstelle von "201 Created". Dies gilt unabhängig davon, ob PUT oder POST zum Erstellen des Indexes verwendet wird.

Beispiele

Beispiel: Ein Indexschema

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer" },
    { "name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true },
    { "name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Address", "type": "Edm.ComplexType", 
      "fields": [
          { "name": "StreetAddress", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "searchable": true },
          { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "Country", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true }
        ]
    },
    { "name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true },
    { "name": "Rooms", "type": "Collection(Edm.ComplexType)", 
      "fields": [
          { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene" },
          { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene" },
          { "name": "Type", "type": "Edm.String", "searchable": true },
          { "name": "BaseRate", "type": "Edm.Double", "filterable": true, "facetable": true },
          { "name": "BedOptions", "type": "Edm.String", "searchable": true },
          { "name": "SleepsCount", "type": "Edm.Int32", "filterable": true, "facetable": true },
          { "name": "SmokingAllowed", "type": "Edm.Boolean", "filterable": true, "facetable": true },
          { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "facetable": true, "analyzer": "tagsAnalyzer" }
        ]
    }
  ],
  "suggesters": [
      { "name": "sg", "searchMode": "analyzingInfixMatching", "sourceFields": ["HotelName"] }
  ],
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "tagsAnalyzer",
      "charFilters": [ "html_strip" ],
      "tokenizer": "standard_v2"
    }
  ]
}  

Beispiel: Vorschlagser

 "suggesters": [  
   {  
     "name": "name of suggester",  
     "searchMode": "analyzingInfixMatching",  
     "sourceFields": ["field1", "field2", ...]  
   }  
 ]

Auf einen Vorschlag wird bei Abfrageanforderungen, die entweder die Vorschlags-API oder die AutoVervollständigen-API enthalten, durch den Namen verwiesen, je nachdem, ob Sie eine Übereinstimmung oder den Rest eines Abfragebegriffs zurückgeben möchten. Weitere Informationen zum Erstellen und Verwenden eines Vorschlags finden Sie unter Erstellen eines Vorschlags.

Beispiel: Ähnlichkeit für die Such relevanz

Diese Eigenschaft legt den Rangfolgenalgorithmus fest, der zum Erstellen einer Relevanzbewertung in den Suchergebnissen einer Volltextsuchabfrage verwendet wird. Bei Diensten, die nach dem 15. Juli 2020 erstellt wurden, wird diese Eigenschaft ignoriert, da der Ähnlichkeitsalgorithmus immer BM25 ist. Für vorhandene Dienste, die vor dem 15. Juli 2020 erstellt wurden, können Sie bm25 aktivieren, indem Sie dieses Konstrukt wie folgt festlegen:

 "similarity": {
     "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
 }

Beispiel: CORS-Optionen

Clientseitiges JavaScript kann standardmäßig keine APIs aufrufen, da der Browser alle ursprungsübergreifenden Anforderungen verhindert. Um ursprungsübergreifende Abfragen für Ihren Index zuzulassen, aktivieren Sie CORS (Cross-origin resource sharing (Wikipedia)), indem Sie das corsOptions Attribut festlegen. Aus Sicherheitsgründen wird CORS nur von Abfrage-APIs unterstützt.

{
   "name": "hotels",  
   "fields": [ omitted for brevity],
   "suggesters": [ omitted for brevity  ],
   "analyzers": [ omitted for brevity ],
   "corsOptions": (optional) {  
       "allowedOrigins": ["*"] | ["https://docs.microsoft.com:80", "https://azure.microsoft.com:80", ...],  
       "maxAgeInSeconds": (optional) max_age_in_seconds (non-negative integer)  
     }
}

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": "hotels",  
    "fields": [ omitted for brevity],
    "suggesters": [ omitted for brevity  ],
    "analyzers": [ omitted for brevity ],
    "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": "AAD Application ID that was granted access permissions to your specified Azure Key Vault",
        "applicationSecret": "Authentication key of the specified AAD application)"}
      }
} 

Beispiel: Bewertungsprofile

Ein Bewertungsprofil ist ein Abschnitt des Schemas, der benutzerdefinierte Bewertungsverhalten definiert, mit dem Sie beeinflussen können, welche Dokumente in den Suchergebnissen höher angezeigt werden. Bewertungsprofile bestehen aus Feldgewichtungen und Funktionen. Um sie verwenden zu können, fügen Sie in die Abfragezeichenfolge den Profilnamen ein. Weitere Informationen finden Sie unter Hinzufügen von Bewertungsprofilen zu einem Suchindex .

{
   "name": "hotels",  
   "fields": [ omitted for brevity],
   "suggesters": [ omitted for brevity  ],
   "analyzers": [ omitted for brevity ],
   "scoringProfiles": [  
   {  
     "name": "name of scoring profile",  
     "text": (optional, only applies to searchable fields) {  
       "weights": {  
         "searchable_field_name": relative_weight_value (positive #'s),  
         ...  
       }  
     },  
     "functions": (optional) [  
       {  
         "type": "magnitude | freshness | distance | tag",  
         "boost": # (positive number used as multiplier for raw score != 1),  
         "fieldName": "...",  
         "interpolation": "constant | linear (default) | quadratic | logarithmic",  
         "magnitude": {  
           "boostingRangeStart": #,  
           "boostingRangeEnd": #,  
           "constantBoostBeyondRange": true | false (default)  
         },  
         "freshness": {  
           "boostingDuration": "..." (value representing timespan leading to now over which boosting occurs)  
         },  
         "distance": {  
           "referencePointParameter": "...", (parameter to be passed in queries to use as reference location)  
           "boostingDistance": # (the distance in kilometers from the reference location where the boosting range ends)  
         },  
         "tag": {  
           "tagsParameter": "..." (parameter to be passed in queries to specify a list of tags to compare against target fields)  
         }  
       }  
     ],  
     "functionAggregation": (optional, applies only when functions are specified)   
       "sum (default) | average | minimum | maximum | firstMatching"  
       }  
 ]
}

Beispiel: Synonymzuordnungen

Nachdem Sie synonyme Zuordnung in Ihrem Suchdienst erstellt haben, können Sie sie searchable Feldern vom Typ Edm.String oder Collection(Edm.String) in einem Index zuweisen. Die folgende Indexdefinition konfiguriert das Feld "genre", um die Synonymzuordnung "mysynonymmap" zu verwenden.

Sie können index aktualisieren verwenden, um diese Eigenschaft einem vorhandenen Feld hinzuzufügen. Eine Feldeigenschaft synonymMaps gibt die Zuordnung an (eine pro Feld). Sie können die synonymMaps Eigenschaften vorhandener Felder jederzeit aktualisieren.

Abfragen wie gewohnt mithilfe von Begriffen oder Ausdrücken (in Anführungszeichen eingeschlossen). In Azure AI Search müssen zweiteilige Begriffe, z. B. "Whirlpool", als Ausdruck ausgedrückt werden, andernfalls wird jeder Begriff unabhängig voneinander ausgewertet. Wenn Sie nach "Whirlpool" fragen, sucht die Suchmaschine nach diesem Ausdruck sowie nach allen von Ihnen definierten Synonymen, z. B. Whirlpool.

POST /indexes?api-version=2020-06-30
{
    "name":"myindex",
    "fields":[
    ...
        {
            "name":"genre",
            "type":"Edm.String",
            "searchable":true,
            "analyzer":"en.lucene",
            "synonymMaps": [
                "mysynonymmap"
            ]
        }
    ]
    ...
}

Weitere Informationen