インデックスの作成 (Azure AI Search REST API)

インデックスは、テーブルがデータベース内のレコードを整理する方法と同様に、Azure AI Search でドキュメントを整理および検索する主な手段です。 各インデックスには、インデックス スキーマ (フィールド名、データ型、属性) にすべて準拠するドキュメントのコレクションがありますが、インデックスでは他の検索動作を定義する追加のコンストラクト (suggesters、スコアリング プロファイル、CORS 構成) も指定されます。

要求に対して POST または PUT を使用できます。 いずれの場合も、要求本文の JSON ドキュメントによってオブジェクト定義が提供されます。

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

または、PUT を使用して、URI でインデックス名を指定することもできます。

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

HTTPS はすべてのサービス要求に必要です。 インデックスが存在しない場合は、作成されます。 既に存在する場合は、新しい定義に更新されます。

インデックスを作成すると、スキーマとメタデータが確立します。 インデックスを設定するのは、別の操作です。 この手順では、インデクサー (サポートされているデータ ソースで使用できる インデクサー操作を参照) または ドキュメントの追加、更新、または削除を使用できます。 逆インデックスは、ドキュメントの転記時に生成されます。

注意

作成できるインデックスの最大数は、料金階層によって異なります。 詳細については、サービスの制限に関する記事を参照してください。

URI パラメーター

パラメーター 説明
サービス名 必須。 これを検索サービスの一意のユーザー定義名に設定します。
インデックス名 PUT を使用する場合は、URI で必須です。 名前は小文字で、文字または数字で始まり、スラッシュやドットがなく、128 文字未満である必要があります。 名前の先頭は文字または数字で始まる必要がありますが、アンダースコアとダッシュが連続していない限り、名前の残りの部分には任意の文字、数字、アンダースコア、ダッシュを含めることができます。
api-version 必須。 サポートされている バージョンの 一覧については、「API のバージョン」を参照してください。

要求ヘッダー

次の表では、必須と省略可能の要求ヘッダーについて説明します。

フィールド 説明
Content-Type 必須。 これを application/json
api-key Azure ロールを使用していて、要求にベアラー トークンが指定されている場合は省略可能。それ以外の場合はキーが必要です。 要求の作成には、(クエリ キーではなく) 管理キーに設定されたヘッダーを含める api-key 必要があります。 詳細については、「 キー認証を使用して Azure AI Search に接続 する」を参照してください。

要求本文

要求の本文には、インデックスにフィードされるドキュメント内のデータ フィールドの一覧など、スキーマ定義が含まれます。

次の JSON は、定義のメイン部分の大まかな表現です。

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

要求には次のプロパティが含まれます。

プロパティ 説明
name 必須。 インデックスの名前です。 インデックス名には小文字、数字、またはダッシュのみを含める必要があり、ダッシュで開始または終了することはできません。128 文字に制限されています。
fields 必須。 名前、データ型、そのフィールドに対して許可されるアクションを定義する属性など、このインデックスにフィードされるフィールドのコレクション。 データ型はエンティティ データ モデル (EDM) に準拠しています。 詳細については、「サポートされるデータ型」を参照してください。 キー フィールドとして指定するフィールドがコレクション 内に 1 つ存在する必要があります。 文字列フィールドでなければなりません。 このフィールドは、インデックスと共に格納されている各ドキュメントの一意識別子 (ドキュメント ID とも呼ばれます) を表します。 ドキュメント キーでは大文字と小文字が区別されます。 たとえば、キー "abc" を持つドキュメントは、キー "ABC" を持つドキュメントとは異なると見なされます。
similarity 省略可能。 2020 年 7 月 15 日より前に作成されたサービスの場合は、BM25 ランク付けアルゴリズムを使用するようにこのプロパティを設定します。 有効な値は、"#Microsoft.Azure.Search.ClassicSimilarity" または "#Microsoft.Azure.Search.BM25Similarity" です。 このプロパティをサポートする API バージョンには、2020-06-30 および 2019-05-06-Preview が含まれます。 詳細については、「 Azure AI Search でのアルゴリズムのランク付け」を参照してください。
suggesters 省略可能。 オートコンプリートされたクエリまたは推奨される検索結果 (インデックスごとに 1 つ) に使用されます。 オートコンプリートや提案などの部分的なクエリで一致するプレフィックスを格納するデータ構造です。 nameオートコンプリートされたクエリと提案された結果のコンテンツを提供する、および suggester 対応フィールドで構成されます。 searchMode は必須であり、常に に設定します analyzingInfixMatching。 クエリ文字列内の任意の用語で一致が発生することを指定します。
scoringProfiles 省略可能。 カスタム検索スコアのランク付けに使用されます。 カスタム プロファイルを既定として使用するように設定 defaultScoringProfile します。クエリ文字列でカスタム プロファイルが指定されていない場合は常に呼び出されます。 要素の詳細については、「 検索インデックスにスコアリング プロファイルを追加する 」および次のセクションの例を参照してください。
アナライザー、charFilters、トークナイザー、tokenFilters 省略可能。 カスタム アナライザーを定義する場合は、インデックスのこれらのセクションを指定します。 既定では、これらのセクションは null です。
defaultScoringProfile 省略可能。 既定のスコアリング動作を上書きするカスタム スコアリング プロファイルの名前。
corsOptions 省略可能。 クライアント側の JavaScript では、ブラウザーですべてのクロスオリジン要求が禁止されるため、既定では API を呼び出すことはできません。 インデックスに対するクロスオリジン クエリを許可するには、corsOptions 属性を設定することによって、CORS (クロスオリジン リソース共有) を有効にします。 セキュリティ上の理由から、CORS がサポートされているのはクエリ API だけです。 セクションにはcorsOptionsallowedOrigins

(必須) インデックスへのアクセスが許可される配信元のコンマ区切りのリストが含まれます。各配信元は通常、protocol://< fully-qualified-domain-name>:<port という形式です (<ただし>、ポート>は省略されることがよくあります)。 つまり、このオリジンから提供されたすべての JavaScript コードは、インデックスに対するクエリが許可されます (正しい api-key が指定されている場合)。 すべての配信元へのアクセスを許可する場合は、配列の 1 つの項目として をallowedOrigins指定*します。 これは運用環境では推奨されませんが、開発やデバッグに役立つ場合があります。

maxAgeInSeconds (省略可能)ブラウザーはこの値を使用して、CORS プリフライト応答をキャッシュする期間 (秒単位) を決定します。 負ではない整数を指定する必要があります。 この値が大きいほどパフォーマンスはよくなりますが、CORS ポリシーの変更が有効になるまでの時間は長くなります。 設定されていない場合は、既定の期間 5 分が使用されます。
encryptionKey 省略可能。 Azure Key Vaultで管理されている、独自のキーを使用してシノニム マップを暗号化するために使用されます。 2019-01-01 以降に作成された課金対象の検索サービスで使用できます。

encryptionKeyセクションには、ユーザー定義 keyVaultKeyName (必須)、システムによって生成された keyVaultKeyVersion (必須)、キーkeyVaultUriを提供する (必須、DNS 名とも呼ばれます) が含まれます。 URI の例としては、"https://my-keyvault-name.vault.azure.net"" があります。

必要に応じて、マネージド システム ID を使用していないかどうかを指定 accessCredentials できます。 のaccessCredentialsプロパティには、指定した Azure Key Vaultへのアクセス許可が付与されたアプリケーション ID Microsoft Entra ID)、および applicationSecret (登録済みアプリケーションの認証キー) が含まれますapplicationId。 次のセクションの例は、構文を示しています。

フィールド定義

インデックスを作成するときに、フィールドに次の属性を設定できます。

属性 説明
name 必須。 フィールドの名前を設定します。フィールドの名前は、インデックスまたは親フィールドの fields コレクション内で一意である必要があります。
type 必須。 フィールドのデータ型を設定します。 フィールドは単純でも複雑でもかまいません。 単純フィールドは、テキストやEdm.Int32整数などのEdm.Stringプリミティブ型です。 複合フィールド には、それ自体が単純または複雑であるサブフィールドを含めることができます。 これにより、オブジェクトとオブジェクトの配列をモデル化できます。これにより、ほとんどの JSON オブジェクト構造をインデックスにアップロードできます。 サポートされている種類の完全な一覧については、「 サポートされているデータ型 (Azure AI Search)」 を参照してください。
key 必須。 フィールドの値がインデックス内のドキュメントを一意に識別するように指定するには、この属性を true に設定します。 キー フィールドの値の最大長は 1024 文字です。 キー フィールドとして各インデックスの最上位フィールドを 1 つだけ選択する必要があり、 型 Edm.Stringである必要があります。 既定値は、 false 単純なフィールドと null 複合フィールドの場合です。

キー フィールドを使用すると、ドキュメントを直接検索したり、特定のドキュメントを更新または削除したりできます。 キー フィールドの値は、ドキュメントを検索またはインデックス作成するときに、大文字と小文字を区別して処理されます。 詳細については、「 参照ドキュメント (Azure AI Search REST API)」 および「 ドキュメントの追加、更新、または削除 (Azure AI Search REST API)」 を参照してください。
retrievable フィールドを検索結果で返すことができるかどうかを示します。 フィルター、並べ替え、スコアリングのメカニズムとしてフィールド (余白など) を使用するが、フィールドをエンド ユーザーに表示しない場合は、この属性 false を に設定します。 この属性はキー フィールド用で true 、複合フィールド用である null 必要があります。 この属性は、既存のフィールドで変更できます。 取得可能に を true 設定しても、インデックス ストレージの要件は増加しません。 既定値は、 true 単純なフィールドと null 複合フィールドの場合です。
searchable フィールドがフルテキスト検索可能で、検索クエリで参照できるかどうかを示します。 つまり、インデックス作成中に単語区切りなどの 字句分析 が行われます。 検索可能なフィールドを "晴れの日" などの値に設定すると、内部的に正規化され、個々のトークン "sunny" と "day" に分割されます。 これにより、これらの語句をフルテキスト検索できます。 または Collection(Edm.String)Edm.Stringのフィールドは、既定で検索できます。 この属性は false 、他の文字列以外のデータ型の単純なフィールドに対しては である必要があり、複合フィールド用である null 必要があります。

検索可能なフィールドは、インデックス内の余分な領域を消費します。これは、Azure AI Search によってそれらのフィールドの内容が処理され、パフォーマンスの高い検索のために補助データ構造に整理されるためです。 インデックスの領域を節約し、検索にフィールドを含める必要がない場合は、searchable を に false設定します。 詳細については、「 Azure AI Search でのフルテキスト検索のしくみ 」を参照してください。
filterable クエリで $filter フィールドを参照できるようにするかどうかを示します。 フィルター可能は、文字列の処理方法で検索可能とは異なります。 型またはCollection(Edm.String)フィルター可能なフィールドEdm.Stringは字句分析を受けないので、比較は完全一致のみを対象とします。 たとえば、このようなフィールド f を "晴れた日" に設定すると、 $filter=f eq 'sunny' 一致は見つかりませんが $filter=f eq 'Sunny day' 、 は見つかります。 この属性は、複合フィールドに対して である null 必要があります。 既定値は、 true 単純なフィールドと null 複合フィールドの場合です。 インデックス サイズを小さくするには、フィルター処理しないフィールドでこの属性 false を に設定します。
sortable 式で $orderby フィールドを参照できるようにするかどうかを示します。 既定では、Azure AI Search は結果をスコア順に並べ替えますが、多くのエクスペリエンスでは、ユーザーはドキュメント内のフィールドで並べ替える必要があります。 単純なフィールドは、単一値の場合にのみ並べ替えることができます (親ドキュメントのスコープに 1 つの値があります)。

単純なコレクション フィールドは複数値であるため、並べ替えできません。 複雑なコレクションの単純なサブフィールドも複数値であるため、並べ替えできません。 これは、それが直接の親フィールドであるか、先祖フィールドであるかに関係なく、複雑なコレクションです。 複合フィールドを並べ替え可能にすることはできません。また、このようなフィールドには並べ替え可能な属性を指定 null する必要があります。 並べ替え可能の既定値は、 true 単一値の単純フィールド、 false 複数値の単純フィールド、および null 複合フィールドの場合です。
facetable ファセット クエリでフィールドを参照できるようにするかどうかを示します。 通常、カテゴリ別のヒット数を含む検索結果のプレゼンテーションで使用されます (たとえば、デジタルカメラを検索し、ブランド別、メガピクセル別、価格別などのヒット数を確認します)。 この属性は、複合フィールドに対して である null 必要があります。 型 Edm.GeographyPoint または Collection(Edm.GeographyPoint) 型のフィールドをファセット可能にすることはできません。 既定値は、 true 他のすべての単純なフィールドに対してです。 インデックス サイズを小さくするには、ファセットを設定しないフィールドでこの属性 false を に設定します。
アナライザー インデックス作成およびクエリ操作中に文字列をトークン化するための構文アナライザーを設定します。 このプロパティの有効な値には、 言語アナライザー組み込みのアナライザーおよびカスタム アナライザーが含まれます。 既定値は、standard.lucene です。 この属性は、検索可能な文字列フィールドでのみ使用でき、searchAnalyzer または indexAnalyzer と共に設定することはできません。 アナライザーが選択され、フィールドがインデックスに作成されると、フィールドに対して変更することはできません。 複合フィールドの 場合は であるnull必要があります。
searchAnalyzer indexAnalyzer と組み合わせてこのプロパティを設定して、インデックス作成とクエリに異なる構文アナライザーを指定します。 このプロパティを使用する場合は、アナライザーを に null 設定し、indexAnalyzer が許可される値に設定されていることを確認します。 このプロパティの有効な値には、 組み込みのアナライザーカスタム アナライザーが含まれます。 この属性は、検索可能なフィールドでのみ使用できます。 検索アナライザーはクエリ時にのみ使用されるため、既存のフィールドで更新できます。 複合フィールドの 場合は であるnull必要があります。
indexAnalyzer このプロパティを searchAnalyzer と組み合わせて設定して、インデックス作成とクエリに異なる構文アナライザーを指定します。 このプロパティを使用する場合は、アナライザーを に null 設定し、searchAnalyzer が許可される値に設定されていることを確認します。 このプロパティの有効な値には、 組み込みのアナライザーカスタム アナライザーが含まれます。 この属性は、検索可能なフィールドでのみ使用できます。 インデックス アナライザーを選択すると、フィールドに対して変更することはできません。 複合フィールドの 場合は であるnull必要があります。
synonymMaps このフィールドに関連付けるシノニム マップの名前の一覧。 この属性は、検索可能なフィールドでのみ使用できます。 現時点では、フィールドごとに 1 つのシノニム マップのみがサポートされています。 シノニム マップをフィールドに割り当てると、シノニム マップのルールを使用して、そのフィールドを対象とするクエリ用語がクエリ時に展開されます。 この属性は、既存のフィールドで変更できます。 複合フィールドの場合は null 、 または 空のコレクションである必要があります。
fields これが 型 Edm.ComplexType または Collection(Edm.ComplexType)のフィールドである場合は、サブフィールドの一覧。 単純なフィールドの場合は null 、 または を空にする必要があります。 サブフィールドの使用方法と使用方法の詳細については、「 Azure AI Search で複雑なデータ型をモデル 化する方法」を参照してください。

注意

フィルター可能、並べ替え可能、またはファセット可能な型 Edm.String のフィールドの長さは最大 32 キロバイトです。 これは、このようなフィールドの値は 1 つの検索用語として扱われ、Azure AI Search の用語の最大長は 32 キロバイトであるためです。 これより多くのテキストを 1 つの文字列フィールドに格納する必要がある場合は、インデックス定義でフィルター可能、並べ替え可能、ファセット可能を に明示的に設定する false 必要があります。

フィールドを検索可能、フィルター可能、並べ替え可能、またはファセット可能に設定すると、インデックスのサイズとクエリのパフォーマンスに影響します。 クエリ式で参照されることを意図していないフィールドには、これらの属性を設定しないでください。

フィールドが検索可能、フィルター可能、並べ替え可能、またはファセット可能に設定されていない場合、フィールドはどのクエリ式でも参照できません。 これは、クエリでは使用されないが、検索結果に必要なフィールドに役立ちます。

注意

作成できるインデックスの最大数は、価格レベルによって異なります。 詳細については、サービスの制限に関する記事を参照してください。

Response

要求が成功した場合は、状態コード "201 Created" が表示されます。

既定では、応答本文にはインデックス定義の JSON が含まれます。 ただし、要求ヘッダーが にreturn=minimal設定されている場合Prefer、応答本文は空で、成功状態コードは "201 Created" ではなく "204 No Content" です。 インデックスの作成に PUT と POST のいずれを使用しても、同じ結果になります。

例: インデックス スキーマ

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

例: Suggesters

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

suggester は、クエリ用語の一致または残りの部分のどちらを返すかに応じて、Suggestions API または Autocomplete API を含むクエリ要求で名前によって参照されます。 suggester の作成と使用の詳細については、「Suggester の 作成」を参照してください。

例: 検索の関連性の類似性

このプロパティは、フルテキスト検索クエリの検索結果に関連性スコアを作成するために使用されるランク付けアルゴリズムを設定します。 2020 年 7 月 15 日以降に作成されたサービスでは、類似性アルゴリズムは常に BM25 であるため、このプロパティは無視されます。 2020 年 7 月 15 日 より前に 作成された既存のサービスの場合は、次のようにこのコンストラクトを設定して BM25 にオプトインできます。

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

例: CORS オプション

クライアント側の JavaScript では、ブラウザーですべてのクロスオリジン要求が禁止されるため、既定では API を呼び出すことはできません。 インデックスへのクロスオリジン クエリを許可するには、 属性を設定して CORS (クロスオリジン リソース共有 (Wikipedia)) を corsOptions 有効にします。 セキュリティ上の理由から、CORS がサポートされているのはクエリ API だけです。

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

例: 暗号化キー

暗号化キーは、追加の暗号化に使用されるカスタマー マネージド キーです。 詳細については、「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)"}
      }
} 

例: スコアリング プロファイル

スコアリング プロファイルは、検索結果の上位に表示されるドキュメントに影響を与えるカスタム スコアリング動作を定義するスキーマのセクションです。 スコアリング プロファイルは、フィールドの重みと関数で構成されます。 使用するには、クエリ文字列にプロファイル名を指定します。 詳細については、「 検索インデックスにスコアリング プロファイルを追加する 」を参照してください。

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

例: シノニム マップ

検索サービスでシノニム マップを作成したら、型Edm.StringまたはCollection(Edm.String)インデックス内のフィールドにsearchable割り当てることができます。 以下のインデックス定義では、シノニム マップ 'mysynonymmap' を使用するように "ジャンル" フィールドを構成します。

[インデックスの更新] を使用して、このプロパティを既存のフィールドに追加できます。 field プロパティ synonymMaps は、マップ (フィールドごとに 1 つ) を指定します。 既存のフィールドの synonymMaps プロパティはいつでも更新できます。

通常どおりにクエリを実行し、語句 (引用符で囲む) を使用します。 Azure AI Search では、"ホット タブ" などの 2 部構成の用語を語句として表現する必要があります。それ以外の場合、各用語は個別に評価されます。 "ホット タブ" に対してクエリを実行すると、検索エンジンによって、その語句と、定義したシノニム (ジャグジーなど) がスキャンされます。

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

こちらもご覧ください