Index erstellen (Azure Cognitive Search REST-API)

Ein Index ist das primäre Mittel zum Organisieren und Durchsuchen von Dokumenten in Azure Cognitive 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 (Vorschläge, 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 Anforderungskörper die Objektdefinition zur Verfügung.

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 er bereits vorhanden ist, wird er mit der neuen 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 einen 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 Für den URI erforderlich, wenn PUT verwendet wird. Der Name muss klein geschrieben sein, mit einem Buchstaben oder einer Zahl beginnen, keine Schrägstriche oder Punkte enthalten und weniger als 128 Zeichen umfassen. Nachdem der Name mit einem Buchstaben oder einer Zahl gestartet wurde, kann der Rest des Namens beliebige Buchstaben, Zahlen und Bindestriche enthalten, solange die Bindestriche nicht aufeinander folgenden sind.
api-version Erforderlich. Die aktuelle stabile Version ist api-version=2020-06-30 . Weitere 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 Erforderlich. api-key wird zum Authentifizieren der Anforderung beim Search-Dienst verwendet. Es handelt sich um einen für Ihren Dienst eindeutigen Zeichenfolgewert. Create requests must include an header set to your admin key (im Gegensatz api-key zu einem Abfrageschlüssel). Sie finden den API-Schlüssel in Ihrem Suchdienstdashboard im Azure-Portal.

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 darstellung der Hauptteile der Definition auf hoher Ebene.

{  
  "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, darf nicht mit Bindestrichen beginnen oder enden und ist auf 128 Zeichen beschränkt.
description Eine optionale Beschreibung.
fields Erforderlich. In diesen Index wird eine Sammlung von Feldern eingespeist, einschließlich Name, Datentyp und Attribute, 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 geben, 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 Kleinschreibung beachtet. Beispielsweise wird ein Dokument mit dem Schlüssel "abc" als von einem Dokument mit dem Schlüssel "ABC" getrennt betrachtet.
Ähnlichkeit Optional. Legen Sie für Dienste, die vor dem 15. Juli 2020 erstellt wurden, diese Eigenschaft auf die Verwendung des BM25-Rangfolgealgorithmus fest. Gültige Werte sind "#Microsoft.Azure.Search.ClassicSimilarity" oder "#Microsoft.Azure.Search.BM25Similarity". API-Versionen, die diese Eigenschaft unterstützen, umfassen 2020-06-30 und 2019-05-06-Preview. Weitere Informationen finden Sie unter Rangfolgealgorithmen in Azure Cognitive Search.
Suggester Optional. Wird für automatisch vervollständigte Abfragen oder vorgeschlagene Suchergebnisse verwendet , eine pro Index. Es handelt sich um eine Datenstruktur, in der Präfixe für den Abgleich bei Teilabfragen wie AutoVervollständigen und Vorschlägen gespeichert werden. Besteht aus einem - und einem Suggester-konformen Feld, das Inhalt für automatisch vervollständigte Abfragen und name vorgeschlagene Ergebnisse bereitstellen. searchMode ist erforderlich und immer auf analyzingInfixMatching festgelegt. Er gibt an, dass der Abgleich für jeden Begriff in der Abfragezeichenfolge erfolgt.
scoringProfiles Optional. Wird für die Bewertung der benutzerdefinierten Suche verwendet. Legen Sie fest, dass ein benutzerdefiniertes Profil als Standard verwendet wird, das aufgerufen wird, wenn kein benutzerdefiniertes defaultScoringProfile Profil in der Abfragezeichenfolge angegeben ist. Weitere Informationen zu Elementen finden Sie unter Hinzufügen von Bewertungsprofilen zu einem Suchindex und das Beispiel im nächsten Abschnitt.
analyzers, charFilters, tokenizers, tokenFilters Optional. Geben Sie diese Abschnitte des Indexes an, wenn Sie benutzerdefinierte Analysegeräte definieren. Standardmäßig sind diese Abschnitte NULL.
defaultScoringProfile Optional. Name eines benutzerdefinierten Bewertungsprofils, das das Standardbewertungsverhalten überschreibt.
corsOptions Optional. Clientseitiger JavaScript-Code kann standardmäßig keine APIs aufrufen, da der Browser jegliche 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 von Ursprüngen, denen Zugriff auf Ihren Index gewährt wird, wobei jeder Ursprung in der Regel das Formular protocol:// : hat (obwohl häufig weggelassen <fully-qualified-domain-name> <port> <port> 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 Array allowedOrigins an. Dies wird für die Produktion nicht 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-Preflightantworten 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 diese Einstellung nicht festgelegt ist, gilt die Standarddauer von 5 Minuten.
encryptionKey Optional. Wird verwendet, um eine Synonymzuordnung mit Ihren eigenen Schlüsseln zu verschlüsseln, die in Ihrer Azure Key Vault. Verfügbar für agerechnete Suchdienste, die am oder nach dem 01.01.2019 erstellt wurden.

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

Optional können Sie angeben, accessCredentials ob Sie keine verwaltete Systemidentität verwenden. Zu den Eigenschaften von accessCredentials applicationId gehören (Azure Active Directory Anwendungs-ID, der Zugriffsberechtigungen für ihre angegebene Azure Key Vault erteilt wurden) und (Authentifizierungsschlüssel der angegebenen Azure AD applicationSecret Anwendung). Ein Beispiel im nächsten Abschnitt veranschaulicht die Syntax.

Felddefinitionen

Die folgenden Attribute können für ein Feld festgelegt werden, wenn ein Index erstellt wird.

attribute Beschreibung
name Erforderlich. Legt den Namen des Felds fest, das innerhalb der Feldsammlung des Indexes oder übergeordneten Felds eindeutig sein muss.
Typ Erforderlich. Legt den Datentyp für das Feld fest. Felder können einfach oder komplex sein. Einfache Felder sind primitive Typen, z. Edm.String B. für Text oder Edm.Int32 ganze Zahlen. Komplexe Felder können Unterfelder enthalten, die entweder einfach oder komplex sind. Dadurch können Sie Objekte und Arrays von Objekten modellieren, wodurch Sie wiederum die meisten JSON-Objektstrukturen in Ihren Index hochladen können. Unter Unterstützte Datentypen (Azure Cognitive Search) finden Sie eine vollständige Liste der unterstützten Typen.
key Erforderlich. Legen Sie dieses Attribut auf TRUE fest, um zu bestimmen, dass die Werte eines Felds Dokumente im Index eindeutig identifizieren. Die maximale Länge von Werten in einem Schlüsselfeld beträgt 1.024 Zeichen. Genau ein Feld der obersten Ebene in jedem Index muss als Schlüsselfeld ausgewählt werden und vom Typ Edm.String sein. Der Standardwert ist false für einfache Felder und für komplexe null Felder.

Schlüsselfelder können verwendet werden, um Dokumente direkt zu suchen und bestimmte Dokumente zu aktualisieren oder zu löschen. Die Werte von Schlüsselfeldern werden beim Suchen oder Indizieren von Dokumenten mit Schreibung behandelt. Weitere Informationen finden Sie unter Lookup Document (Azure Cognitive Search REST API) and Add, Update or Delete Documents (Azure Cognitive Search REST API)(Hinzufügen, Aktualisieren oder Löschen von Dokumenten)REST-API).
retrievable Gibt an, ob das Feld in einem Suchergebnis zurückgegeben werden kann. Legen Sie dieses Attribut auf fest, wenn Sie ein Feld (z. B. Rand) als Filter-, Sortierungs- oder Bewertungsmechanismus verwenden möchten, das Feld jedoch nicht für den Endbenutzer false sichtbar sein soll. Dieses Attribut muss für true Schlüsselfelder und für komplexe null Felder sein. Dieses Attribut kann für vorhandene Felder geändert werden. Das Festlegen von abrufbar true auf führt nicht zu einer Erhöhung der Indexspeicheranforderungen. Der Standardwert ist true für einfache Felder und für komplexe null Felder.
searchable Gibt an, ob das Feld volltextsuchbar ist und in Suchabfragen referenziert werden kann. Dies bedeutet, dass es während der Indizierung einer lexikalischen Analyse unterzogen wird, z. B. der Wörtersverendung. Wenn Sie ein durchsuchbares Feld auf einen Wert wie "Sonnigtag" festlegen, wird es intern normalisiert und in die einzelnen Token sonnig und " " Tag " " 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 für einfache Felder anderer Datentypen ohne Zeichenfolge und für komplexe false null Felder sein.

Ein durchsuchbares Feld verbraucht zusätzlichen Platz im Index, da Azure Cognitive Search den Inhalt dieser Felder verarbeiten und in zusätzlichen Datenstrukturen für eine performante Suche organisiert. Wenn Sie Speicherplatz in Ihrem Index sparen möchten und kein Feld in Suchvorgängen enthalten sein muss, legen Sie durchsuchbar auf false fest. Weitere Informationen finden Sie unter Funktionsweise der Volltextsuche in Azure Cognitive Search.
filterable Gibt an, ob in Abfragen auf das Feld verwiesen $filter werden soll. Filterbar unterscheidet sich von durchsuchbar in der Art und Weise, wie Zeichenfolgen behandelt werden. Felder vom Typ Edm.String oder , die filterbar sind, werden nicht Collection(Edm.String) lexikalisch analysiert, sodass Vergleiche nur für genaue Übereinstimmungen gelten. Wenn Sie ein solches Feld z. B. auf f "Sonnig tag" festlegen, findet keine $filter=f eq 'sunny' Übereinstimmungen, aber $filter=f eq 'Sunny day' wird. Dieses Attribut muss für null komplexe Felder sein. Der Standardwert ist true für einfache Felder und für komplexe null Felder. Um die Indexgröße zu reduzieren, legen Sie dieses Attribut auf für Felder fest, nach denen false Sie nicht filtern möchten.
sortable Gibt an, ob in Ausdrücken auf das Feld verwiesen werden $orderby soll. Standardmäßig sortiert Azure Cognitive Search Ergebnisse nach Bewertung, aber in vielen Fällen 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 Auflistungsfelder können nicht sortiert werden, da sie mehrwertig sind. Einfache Unterfelder komplexer Auflistungen sind ebenfalls mehrwertig und können daher nicht sortiert werden. Dies gilt unabhängig davon, ob es sich um ein unmittelbar übergeordnetes Feld oder ein Übergeordnetes Feld handelt, das die komplexe Sammlung ist. Komplexe Felder können nicht sortiert werden, und das sortierbare Attribut muss für null solche Felder sein. Der Standardwert für sortierbar ist für einwertige einfache Felder, für mehrwertige einfache Felder true false und für komplexe null Felder.
facetable Gibt an, ob in Facetabfragen auf das Feld verwiesen werden soll. Wird in der Regel in einer Darstellung von Suchergebnissen verwendet, die die Trefferanzahl nach Kategorie enthält (suchen Sie z. B. nach Digitalkameras, und sehen Sie Treffer nach Marke, Nach Marke, Nach Preis und so weiter). Dieses Attribut muss für null komplexe Felder sein. Felder vom Typ Edm.GeographyPoint oder Collection(Edm.GeographyPoint) können nicht facettierbar sein. Der Standardwert true ist für alle anderen einfachen Felder. Um die Indexgröße zu reduzieren, legen Sie dieses Attribut auf für Felder fest, für die false Sie kein Facet verwenden möchten.
Analyzer Legt das lexikalische Analyseprogramm zum Tokenisieren von Zeichenfolgen während Indizierungs- und Abfragevorgängen fest. Gültige Werte für diese Eigenschaft sind Sprachanalyse,integrierte Analysegeräteund benutzerdefinierte Analyse. Der Standardwert lautet standard.lucene. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden und kann nicht zusammen mit searchAnalyzer oder indexAnalyzer festgelegt werden. Nachdem das Analysegerät ausgewählt und das Feld im Index erstellt wurde, kann es für das Feld nicht mehr geändert werden. Muss für null komplexe Felder sein.
searchAnalyzer Legen Sie diese Eigenschaft in Verbindung mit indexAnalyzer fest, um verschiedene lexikalische Analysegeräte für Indizierung und Abfragen anzugeben. Wenn Sie diese Eigenschaft verwenden, legen Sie analyzer auf fest, und stellen Sie sicher, dass null indexAnalyzer auf einen zulässigen Wert festgelegt ist. Gültige Werte für diese Eigenschaft sind integrierte Analysegeräte und benutzerdefinierte Analysegeräte. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Das Suchanalyse-Tool kann für ein vorhandenes Feld aktualisiert werden, da es nur zur Abfragezeit verwendet wird. Muss für null komplexe Felder sein.
indexAnalyzer Legen Sie diese Eigenschaft in Verbindung mit searchAnalyzer fest, um verschiedene lexikalische Analysegeräte für Indizierung und Abfragen anzugeben. Wenn Sie diese Eigenschaft verwenden, legen Sie analyzer auf fest, und null stellen Sie sicher, dass searchAnalyzer auf einen zulässigen Wert festgelegt ist. Gültige Werte für diese Eigenschaft sind integrierte Analysegeräte und benutzerdefinierte Analysegeräte. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Nachdem die Indexanalyse ausgewählt wurde, kann sie für das Feld nicht mehr geändert werden. Muss für null komplexe Felder sein.
synonymMaps Eine Liste der Namen von Synonymzuordnungen, die diesem Feld zugeordnet werden. 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 null eine leere Auflistung für komplexe Felder sein.
fields Eine Liste von Unterfeldern, wenn dies ein Feld vom Typ Edm.ComplexType oder Collection(Edm.ComplexType) ist. Muss für null einfache Felder oder leer sein. Unter Modellieren komplexer Datentypen in Azure Cognitive Search finden Sie weitere Informationen zur Verwendung von Unterfeldern.

Hinweis

Felder vom Typ , die filterbar, sortierbar oder facettierbar sind, können eine Länge von Edm.String mindestens 32 KB haben. Dies liegt daran, dass Werte solcher Felder als einzelner Suchbegriff behandelt werden und die maximale Länge eines Begriffs in Azure Cognitive 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 facettierbar explizit auf false festlegen.

Das Festlegen eines Felds als durchsuchbar, filterbar, sortierbar oder facettierbar wirkt sich auf die Indexgröße und Abfrageleistung aus. 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 facettierbar festgelegt ist, kann in keinen 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 die JSON für die erstellte Indexdefinition. Wenn der Prefer-Anforderungsheader jedoch auf „return=minimal“ festgelegt ist, ist der Antworttext leer und der Statuscode lautet „204 – kein Inhalt“ statt „201 – erstellt“. 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: Suggesters

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

Auf eine Vorschläge wird in Abfrageanforderungen, die entweder die Suggestions-API oder die AutoVervollständigen-APIenthalten, nach Namen verwiesen, je nachdem, ob Sie eine Übereinstimmung oder den Rest eines Abfragebegriffs zurückgeben möchten. Weitere Informationen zum Erstellen und Verwenden einer Suggester finden Sie unter Erstellen einer Vorschläge.

Beispiel: Ähnlichkeit bei der Suchrelevanz

Diese Eigenschaft legt den Rangfolgealgorithmus fest, der verwendet wird, um eine Relevanznote in den Suchergebnissen einer Volltextsuchabfrage zu erstellen. In 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

Clientseitiger JavaScript-Code kann standardmäßig keine APIs aufrufen, da der Browser jegliche ursprungsübergreifenden Anforderungen verhindert. Um ursprungsübergreifende Abfragen für Ihren Index zu ermöglichen, aktivieren Sie CORS (Cross-Origin Resource Sharing (Wikipedia)) durch Festlegen des corsOptions -Attributs. 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 vom Kunden verwaltete Schlüssel, die für zusätzliche Verschlüsselung verwendet werden. Weitere Informationen finden Sie unter Verschlüsselung mit vom Kunden 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 benutzerdefiniertes 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"  
       }  
 ]
}

Siehe auch