インデックスの更新 (Azure AI Search REST API)

既存のインデックスを変更するには、通常、次のスキーマ変更を除き、 インデックスの削除と再構築が必要です。

  • フィールド コレクションに新しいフィールドを追加する

  • 新しく作成したフィールドを suggester に追加する

  • スコアリング プロファイルを追加または変更する

  • 暗号化キーを追加または変更する

  • 新しい カスタム アナライザーを追加する

  • CORS オプションを変更する

  • 次の 3 つの変更のいずれかを使用して、既存のフィールドを変更します。

    • 変更 retrievable (値は true または false)
    • 変更 searchAnalyzer (クエリ時に使用)
    • 追加または変更 synonymMaps (クエリ時に使用)

これらの更新プログラムを追加するには、要求 URI にインデックス名を入力します。 要求本文に、変更を加えた完全に指定されたインデックス定義を含めます。

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

既存のフィールドとほとんどのフィールド属性を削除または変更したり、サジェスターにフィールドを追加したりすることはできません。 に追加 suggesterできるのは、新しく作成されたフィールドのみです。

新しいフィールドが追加されると、既存のすべてのドキュメントで、そのフィールドの null 値が自動的に取得されます。 新しいフィールドに値が指定されるか (マージを使用)、または新しいドキュメントが追加されるまで、他のストレージ領域は使用されません。

既存のアナライザー、トークナイザー、トークン フィルター、および文字フィルターは変更できません。 既存のインデックスに新しいインデックスを追加できるのは、インデックス更新要求でフラグがオンになっている場合 allowIndexDowntime のみです。 ベクター検索をサポートしていない API (特に REST API バージョン 2023-07-01 Preview より前) を使用して確立された既存のインデックスに初期ベクター フィールドを追加する場合も、同じ規則が適用されます。

PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true

この操作では、インデックスが数秒間オフラインになります。 インデックスがオフラインの間、インデックス作成とクエリ要求は失敗します。 インデックスがオンラインに戻った後、数分間、パフォーマンスと書き込み操作が一時的に損なわれる可能性があります。

URI パラメーター

パラメーター 説明
サービス名 必須。 これを検索サービスの一意のユーザー定義名に設定します。
インデックス名 必須。 要求 URI は、更新するインデックスの名前を指定します。
api-version 必須。 サポートされている バージョンの 一覧については、「API のバージョン」を参照してください。
allowIndexDowntime 省略可能。 既定では false です。 アナライザー、トークナイザー、トークン フィルター、文字フィルター、類似性プロパティの追加や変更など、特定の更新プログラムの場合は true に設定します。 インデックスは更新中にオフラインになります。通常は数秒以下です。

要求ヘッダー

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

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

要求本文

要求本文の構文は、 インデックスの作成と同じです。

既存のインデックスを更新する場合、本文には、保持する元の定義を含む完全なスキーマ定義が含まれている必要があります。 一般に、更新の最適なパターンは、GET を使用してインデックス定義を取得し、それを変更してから PUT で更新することです。

Response

要求が成功した場合、"204 No Content" が返されます。

既定では、応答本文は空です。 ただし、要求ヘッダーが Preferreturn=representation設定されている場合、応答本文には更新されたインデックスの JSON が含まれます。 この場合、成功状態コードは "200 OK" です。

こちらもご覧ください