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

インデックスは、テーブルがデータベース内のレコードを整理するのと同様に、Azure Cognitive 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-version=2020-06-30。 その他 のバージョンについては、「API のバージョン 」を参照してください。

要求ヘッダー

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

フィールド 説明
Content-Type 必須です。 これを application/json
api-key 必須です。 api-key は Search サービスに対する要求の認証に使用されます。 これはサービスに固有の文字列値です。 要求の作成には、(クエリ キーではなく) 管理者キーに設定されたヘッダーを含める api-key 必要があります。 API キーは、Azure portalの検索サービス ダッシュボードにあります。

要求本文

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

次の 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 文字に制限されています。
description 任意の説明です。
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 Cognitive Searchでのアルゴリズムのランク付け」を参照してください。
suggesters 省略可能。 オートコンプリートされたクエリまたは候補の検索結果 (インデックスごとに 1 つ) に使用されます。 これは、オートコンプリートや候補などの部分的なクエリで一致するプレフィックスを格納するデータ構造です。 nameオートコンプリートされたクエリと提案された結果のコンテンツを提供する、 および suggester 対応フィールドで構成されます。 searchMode は必須であり、常に に設定されます analyzingInfixMatching。 クエリ文字列内の任意の用語に対して照合が行われることを指定します。
scoringProfiles 省略可能。 カスタム検索スコアのランク付けに使用されます。 クエリ文字列でカスタム プロファイルが指定されていない場合に呼び出される、カスタム プロファイルを既定値として使用するように設定 defaultScoringProfile します。 要素の詳細については、「 検索インデックスにスコアリング プロファイルを追加する 」と、次のセクションの例を参照してください。
アナライザー、charFilters、トークナイザー、tokenFilters 省略可能。 カスタム アナライザーを定義する場合は、インデックスのこれらのセクションを指定します。 既定では、これらのセクションは null です。
defaultScoringProfile 省略可能。 既定のスコアリング動作を上書きするカスタム スコアリング プロファイルの名前。
corsOptions 省略可能。 ブラウザーではすべてのクロスオリジン要求が禁止されるので、既定ではクライアント側 JavaScript で API を呼び出すことはできません。 インデックスに対するクロスオリジン クエリを許可するには、corsOptions 属性を設定することによって、CORS (クロスオリジン リソース共有) を有効にします。 セキュリティ上の理由から、CORS がサポートされているのはクエリ API だけです。 セクションには corsOptions 次のものが含まれます。

allowedOrigins (必須) インデックスへのアクセスが許可される配信元のコンマ区切りのリスト。各配信元は通常、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へのアクセス許可が付与された Azure Active Directory アプリケーション ID)、および applicationSecret (指定した Azure AD アプリケーションの認証キー) が含まれますapplicationId。 次のセクションの例は、構文を示しています。

フィールド定義

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

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

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

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

注意

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

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

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

注意

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

Response

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

既定で、応答本文には、作成されたインデックス定義の JSON が含まれます。 ただし、Prefer 要求ヘッダーが return=minimal に設定された場合、応答本文は空になり、成功の状態コードは "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"  
       }  
 ]
}

関連項目