Azure Cognitive Search でインデックスの別名を作成する

重要

インデックスの別名は現在パブリック プレビュー段階であり、追加利用規約の下で提供されます。

Azure Cognitive Search におけるインデックスの別名とは、クエリやインデックス作成などの操作でインデックスを参照するときに使用できる第 2 の名前です。 検索インデックスに対応する別名を作成しておけば、インデックス名を別の方法で参照するような場面で、その別名を代わりに使用できます。 別名を使用すると、アプリケーションの参照先インデックスを変更する必要がある場合に柔軟性が向上します。 アプリケーションで参照を更新する必要はなく、別名のマッピングを更新するだけで済みます。

インデックスの別名の主な目的は、運用環境のインデックスを管理しやすくすることです。 たとえば、フィールドの編集や新しいアナライザーの追加などの変更をインデックスの定義に加える必要が生じた場合、新しい検索インデックスを作成する必要があります。すべての検索インデックスは不変であるためです。 つまり、既存のインデックスを削除してから再構築するか、または新しいインデックスを作成して、そのインデックスにアプリケーションを移行しなければなりません。

インデックスを削除してから再構築する代わりに、インデックスの別名を使用できます。 一般的なワークフローは次のようになります。

  1. 検索インデックスを作成します
  2. 検索インデックスに対応する別名を作成します
  3. クエリ要求またはインデックス作成要求をインデックス名ではなく別名に送信するようアプリケーションに変更を加えます。
  4. 再構築が必要な変更をインデックスに対して行う場合は、新しい検索インデックスを作成します
  5. 新しいインデックスの準備が整ったら、別名を更新して新しいインデックスに対応付ければ、自動的に要求が新しいインデックスにルーティングされます。

インデックスの別名を作成する

別名の作成には、プレビュー REST API、プレビュー SDK、または Azure portal を使用できます。 別名は、その name、そしてその別名と対応関係にある検索インデックスの名前から成ります。 indexes 配列に指定できるインデックスの名前は 1 つだけです。

インデックスの別名は、別名の作成と更新 (REST プレビュー) に関するページを使用して作成できます。

POST /aliases?api-version=2021-04-30-preview
{
    "name": "my-alias",
    "indexes": ["hotel-samples-index"]
}

インデックスの別名に要求を送信する

別名を作成したら、いつでもそれを使い始めることができます。 別名は、クエリ、インデックス作成、候補、オートコンプリートなど、あらゆるドキュメント操作で使用できます。

下のクエリで、要求を hotel-samples-index に送信する代わりに my-alias に送信すれば、それに応じて要求がルーティングされます。

POST /indexes/my-alias/docs/search?api-version=2021-04-30-preview
{
    "search": "pool spa +airport",
    "searchMode": any,
    "queryType": "simple",
    "select": "HotelId, HotelName, Category, Description",
    "count": true
}

運用環境でインデックスの定義を更新する必要が生じると予想される場合、クライアント側アプリケーションでは、要求のインデックス名ではなく別名を使用する必要があります。 新しいインデックスを作成すべきシナリオについては、「再構築の条件」で取り上げています。

注意

別名は、ドキュメントの操作でのみ使用するか、インデックス定義を取得および更新する場合にのみ使用することができます。 別名をインデックスの削除に使用したり、Analyze Text API で使用したりすることはできず、またインデクサーで targetIndexName として使用することもできません。

インデックスの入れ替え

今後、新しいインデックスを指すようにアプリケーションを更新する必要があるときは、別名のマッピングを更新するだけで済みます。 別名の作成と更新 (REST プレビュー) で説明されているように、更新には PUT が必要です。

PUT /aliases/my-alias?api-version=2021-04-30-preview
{
    "name": "my-alias",
    "indexes": ["hotel-samples-index2"]
}

別名を更新すると、その後自動的に、要求が新しいインデックスにルーティングされ始めます。

注意

別名に対する更新がシステムに反映されるまで、最大 10 秒かかるため、その別名が以前マップされていたインデックスを削除するには、10 秒以上お待ちいただく必要があります。

関連項目