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 (Vorschlager, Bewertungsprofile und CORS-Konfiguration) an, die andere Suchverhalten definieren.

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://[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 Indexer-Vorgä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 gepostet 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 kleingeschrieben sein, beginnt mit einem Buchstaben oder einer Zahl, hat keine Schrägstriche oder Punkte, und es sind weniger als 128 Zeichen vorhanden. Nach dem Starten des Namens mit einem Buchstaben oder einer Zahl kann der Rest des Namens beliebige Buchstaben, Zahlen und Striche enthalten, solange die Striche nicht aufeinander folgen.
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. Erstellen von Anforderungen muss einen api-key Header enthalten, der auf Ihren Administratorschlüssel festgelegt ist (im Gegensatz zu einem Abfrageschlüssel). Sie finden den API-Schlüssel im Suchdienstdashboard im Azure-Portal.

Anforderungstext

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

Die folgende JSON ist eine allgemeine Darstellung der Hauptteile 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 Striche enthalten, kann nicht mit Strichen beginnen oder enden und ist auf 128 Zeichen beschränkt.
description Eine optionale Beschreibung.
fields Erforderlich. Eine Sammlung von Feldern wird in diesen Index eingespeist, einschließlich Name, Datentyp und Attributen, die zulässige Aktionen für dieses Feld definieren. Datentypen entsprechen dem Entitätsdatenmodell (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 dar, der manchmal als Dokument-ID bezeichnet wird, für jedes Dokument, das mit dem Index gespeichert ist. Dokumentschlüssel sind Groß-/Kleinschreibung beachtet. Beispielsweise wird ein Dokument mit dem Schlüssel "abc" als eindeutig von einem Dokument mit dem Schlüssel "ABC" betrachtet.
Ähnlichkeit Optional. Legen Sie für Dienste, die vor dem 15. Juli 2020 erstellt wurden, diese Eigenschaft fest, um den BM25-Bewertungsalgorithmus zu verwenden. 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 Bewertungsalgorithmen in Azure Cognitive Search.
Vorschlager Dies ist optional. Wird für automatisch abgeschlossene Abfragen oder vorgeschlagene Suchergebnisse verwendet, 1 pro Index. Es handelt sich um eine Datenstruktur, die Präfixe für den Abgleich auf Teilabfragen wie AutoVervollständigen und Vorschläge speichert. Besteht aus einem name und vorschlagsfähigen Feldern, die Inhalte für automatisch abgeschlossene Abfragen und vorgeschlagene Ergebnisse bereitstellen. searchMode ist erforderlich, und immer auf analyzingInfixMatching. Es gibt an, dass der Abgleich für einen beliebigen Ausdruck in der Abfragezeichenfolge erfolgt.
scoreProfiles Dies ist optional. Wird für benutzerdefinierte Suchbewertungen verwendet. Wird festgelegt defaultScoringProfile , um ein benutzerdefiniertes Profil als Standard zu verwenden, wird aufgerufen, wenn ein benutzerdefiniertes Profil nicht in der Abfragezeichenfolge angegeben wird. Weitere Informationen zu Elementen finden Sie unter Hinzufügen von Bewertungsprofilen zu einem Suchindex und zum Beispiel im nächsten Abschnitt.
Analysegeräte, CharFilter, Tokenizer, TokenFilter Dies ist optional. Geben Sie diese Abschnitte des Indexes an, wenn Sie benutzerdefinierte Analysegeräte definieren. Standardmäßig sind diese Abschnitte null.
defaultScoringProfile Dies ist optional. Name eines benutzerdefinierten Bewertungsprofils, das das Standardbewertungsverhalten überschreibt.
corsOptions Dies ist 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:
allowedOrigins
(Erforderlich) Eine durch Trennzeichen getrennte Liste von Ursprüngen, die Zugriff auf Ihren Index gewährt wird, wobei jeder Ursprung in der Regel das Formular protocol://< ful-qualified-domain-name>:<port> (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 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) zu ermitteln, um CORS Preflight-Antworten zwischenzuspeichern. 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 Dies ist 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 abrechnungsfähige Suchdienste, die am oder nach 2019-01-01 erstellt wurden.

Ein encryptionKey Abschnitt enthält einen benutzerdefinierten keyVaultKeyName (erforderlich), einen vom System generierten keyVaultKeyVersion (erforderlich) und einen keyVaultUri Bereitgestellten Schlüssel (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 (Azure Active Directory Anwendungs-ID, die Zugriffsberechtigungen für Ihre angegebene Azure Key Vault gewährt wurde) und applicationSecret (Authentifizierungsschlüssel der angegebenen Azure AD-Anwendung). Ein Beispiel im nächsten Abschnitt veranschaulicht die Syntax.

Felddefinitionen

Die folgenden Attribute können beim Erstellen eines Indexes auf einem Feld festgelegt werden.

attribute BESCHREIBUNG
name Erforderlich. Legt den Namen des Felds fest, das innerhalb der Feldauflistung 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 Grundtypen, z Edm.String . B. für Text oder Edm.Int32 ganze Zahlen. Komplexe Felder können Unterfelder haben, die sich entweder einfach oder komplex befinden. Auf diese Weise können Sie Objekte und Arrays von Objekten modellieren, wodurch Sie wiederum die meisten JSON-Objektstrukturen in Ihren Index hochladen können. Siehe unterstützte Datentypen (Azure Cognitive Search) für die vollständige Liste der unterstützten Typen.
Schlüssel Erforderlich. Legen Sie dieses Attribut auf "true" fest, um festzulegen, dass die Werte eines Felds dokumente im Index eindeutig identifizieren. Die maximale Länge von Werten in einem Schlüsselfeld beträgt 1024 Zeichen. Genau ein Feld auf oberster Ebene in jedem Index muss als Schlüsselfeld ausgewählt werden und muss vom Typ Edm.Stringsein. Standard 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 in Groß-/Kleinschreibung behandelt. Ausführliche Informationen finden Sie unter Nachschlagedokument (Azure Cognitive Search REST-API) und Hinzufügen, Aktualisieren oder Löschen von Dokumenten (Azure Cognitive Search REST-API).
retrievable Gibt an, ob das Feld in einem Suchergebnis zurückgegeben werden kann. Legen Sie dieses Attribut fest false , wenn Sie ein Feld (z. B. Rand) als Filter-, Sortier- oder Bewertungsmechanismus verwenden möchten, das Feld jedoch nicht für den Endbenutzer sichtbar sein soll. Dieses Attribut muss true für Schlüsselfelder gelten, und es muss sich um komplexe Felder handelt null . Dieses Attribut kann in vorhandenen Feldern geändert werden. Durch festlegen, dass true das Abrufen nicht zu einer Erhöhung der Indexspeicheranforderungen führt. Standard ist true für einfache Felder und null für komplexe Felder.
searchable Gibt an, ob das Feld volltextsuchbar ist und in Suchabfragen darauf verwiesen werden kann. Dies bedeutet, dass sie während der Indizierung lexikalische Analysen wie Worttrennung durchlaufen wird. 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 des Typs Edm.String oder Collection(Edm.String) sind standardmäßig durchsuchbar. Dieses Attribut muss false für einfache Felder anderer Nicht-Zeichenfolgen-Datentypen gelten, und es muss sich um komplexe Felder handelt null .

Ein durchsuchbares Feld verbraucht zusätzlichen Speicherplatz in Ihrem Index, da Azure Cognitive Search den Inhalt dieser Felder verarbeitet und sie in Hilfsdatenstrukturen für die ausführungsfähige Suche organisieren. Wenn Sie Speicherplatz in Ihrem Index sparen möchten und kein Feld in Suchvorgängen enthalten sein muss, legen Sie die Suchfunktion auf falsefest. Weitere Informationen finden Sie unter "Funktionsweise der Volltextsuche" in Azure Cognitive Search.
filterable Gibt an, ob das Feld in $filter Abfragen referenziert werden soll. Filterbar unterscheidet sich von der Durchsuchung, in der Zeichenfolgen behandelt werden. Felder vom Typ Edm.String oder Collection(Edm.String) die gefiltert werden können, durchlaufen keine lexikalische Analyse, sodass Vergleiche nur für genaue Übereinstimmungen gelten. Wenn Sie z. B. ein solches Feld f auf "Sonniger Tag" festlegen, $filter=f eq 'sunny' werden keine Übereinstimmungen gefunden, sondern $filter=f eq 'Sunny day' werden. Dieses Attribut muss für komplexe Felder gelten null . Standard ist true für einfache Felder und null für komplexe Felder. Um die Indexgröße zu verringern, legen Sie dieses Attribut false auf Felder fest, auf die Sie nicht filtern.
sortable Gibt an, ob das Feld in $orderby Ausdrücken referenziert werden soll. Standardmäßig Azure Cognitive Search Ergebnisse nach Bewertung sortiert, aber in vielen Erfahrungen möchten Benutzer nach Feldern in den Dokumenten sortieren. Ein einfaches Feld kann nur dann sortiert werden, wenn es einzelwertig 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 Sammlungen sind ebenfalls mehrwertig und können daher nicht sortiert werden. Dies gilt, ob es sich um ein direktes ü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 gelten null . Der Standardwert für sortierbare Felder ist true für einfache Felder mit einem wertigen Wert, false für mehrwertige einfache Felder und null für komplexe Felder.
facetable Gibt an, ob das Feld in Facetabfragen referenziert werden soll. Wird in der Regel in einer Präsentation von Suchergebnissen verwendet, die die Trefferanzahl nach Kategorie umfasst (z. B. suchen Sie nach Digitalen Kameras und sehen Sie Treffer nach Marke, nach Megapixeln, nach Preis usw.). Dieses Attribut muss für komplexe Felder gelten null . Felder des Typs Edm.GeographyPoint oder Collection(Edm.GeographyPoint) können nicht facetable sein. Der Standardwert ist true für alle anderen einfachen Felder. Um die Indexgröße zu verringern, legen Sie dieses Attribut false auf Felder fest, für die Sie keine Faceting ausführen.
Analyzer Legt die lexikalische Analyse für die Tokenisierung von Zeichenfolgen während der Indizierung und Abfragevorgänge fest. Gültige Werte für diese Eigenschaft umfassen Sprachanalyse,integrierte Analysegeräte und benutzerdefinierte Analysegeräte. Der Standardwert lautet standard.lucene. Dieses Attribut kann nur mit durchsuchbaren Zeichenfolgenfeldern verwendet werden und kann nicht zusammen mit searchAnalyzer oder indexAnalyzer festgelegt werden. Sobald die Analyse ausgewählt wurde und das Feld im Index erstellt wird, kann es für das Feld nicht geändert werden. Muss für komplexe Felder seinnull.
searchAnalyzer Legen Sie diese Eigenschaft in Verbindung mit indexAnalyzer fest, um verschiedene lexikalische Analysegeräte für die Indizierung und Abfragen anzugeben. Wenn Sie diese Eigenschaft verwenden, legen Sie die Analyse auf null fest, und stellen Sie sicher, dass indexAnalyzer auf einen zulässigen Wert festgelegt ist. Gültige Werte für diese Eigenschaft umfassen integrierte Analysegeräte und benutzerdefinierte Analysegeräte. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Die Suchanalyse kann auf einem vorhandenen Feld aktualisiert werden, da sie nur zur Abfragezeit verwendet wird. Muss für komplexe Felder seinnull.
indexAnalyzer Legen Sie diese Eigenschaft in Verbindung mit searchAnalyzer fest, um verschiedene lexikalische Analyzer für Indizierung und Abfragen anzugeben. Wenn Sie diese Eigenschaft verwenden, legen Sie die Analyse auf null fest, und stellen Sie sicher, dass searchAnalyzer auf einen zulässigen Wert festgelegt ist. Gültige Werte für diese Eigenschaft umfassen integrierte Analysegeräte und benutzerdefinierte Analysegeräte. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Sobald die Indexanalyse ausgewählt wurde, kann sie für das Feld nicht geändert werden. Muss für komplexe Felder seinnull.
synonymMaps Eine Liste der Namen des Synonyms, 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 das Feld ausgerichtet sind, zur Abfragezeit mithilfe der Regeln in der Synonymzuordnung erweitert werden. Dieses Attribut kann in vorhandenen Feldern geändert werden. Muss eine leere Auflistung für komplexe Felder sein null oder eine leere Auflistung sein.
fields Eine Liste der Unterfelder, wenn es sich um ein Feld vom Typ Edm.ComplexType oder Collection(Edm.ComplexType). Muss für einfache Felder oder leer sein null . Weitere Informationen zum Verwenden von Unterfeldern finden Sie unter "Modellieren komplexer Datentypen" in Azure Cognitive Search.

Hinweis

Felder des Typs Edm.String , die gefiltert, sortierbar oder facetable sind, können maximal 32 Kilobyte lang sein. Dies liegt daran, dass Werte solcher Felder als einzelner Suchbegriff behandelt werden und die maximale Länge eines Ausdrucks in Azure Cognitive Search 32 Kilobyte beträgt. Wenn Sie mehr Text als dies in einem einzelnen Zeichenfolgenfeld speichern müssen, müssen Sie in Der Indexdefinition explizit filterbare, sortierbare und facetable false festlegen.

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

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

Hinweis

Die maximale Anzahl von Indizes, die Sie erstellen können, variiert je nach Preisstufe. 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: Vorschlager

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

Ein Vorschlager wird anhand des Namens auf Abfrageanforderungen verwiesen, die entweder die Vorschläge-API oder die AutoVervollständigen-API enthalten, je nachdem, ob Sie eine Übereinstimmung oder den Rest eines Abfrageausdrucks zurückgeben möchten. Weitere Informationen zum Erstellen und Verwenden eines Vorschlagers finden Sie unter Erstellen eines Vorschlagers.

Beispiel: Ähnlichkeit für die Suchrelevanz

Diese Eigenschaft legt den Bewertungsalgorithmus fest, der zum Erstellen einer Relevanzbewertung in Suchergebnissen einer Volltextsuchabfrage verwendet wird. 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 sich bei BM25 anmelden, 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 zuzulassen, aktivieren Sie CORS (Ursprungsressourcenfreigabe (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 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 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 für Details.

{
   "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