Azure AI Search でのデータインポート

Azure AI Search では、クエリは、 検索インデックスに読み込まれたユーザー所有のコンテンツに対して実行されます。 この記事では、インデックスを作成する 2 つの基本的なワークフローについて説明します。プログラムでデータをインデックスにプッシュするワークフローと、検索インデクサーを使用してデータをプルするワークフローです。

どちらの方法でも、外部データ ソースからドキュメントが読み込まれます。 空のインデックスを作成することもできますが、コンテンツを追加するまでクエリは実行できません。

Note

AI エンリッチメントがソリューションの要件である場合は、プル モデル (インデクサー) を使用してインデックスを読み込む必要があります。 スキルセットはインデクサーにアタッチされ、独立して実行されません。

インデックスにデータをプッシュする

プッシュ モデルは、API を使用して既存の検索インデックスにドキュメントをアップロードするアプローチです。 ドキュメントは、1 バッチあたり最大 1,000 個、またはバッチあたり 16 MB (メガバイト) (どちらか早い方) に個別に、またはバッチでアップロードできます。

主な利点:

  • データ ソースの種類に制限はありません。 ペイロードは、インデックス スキーマにマップされる JSON ドキュメントで構成されている必要がありますが、データはどこからでもソース化できます。

  • 実行頻度に制限はありません。 インデックスには、必要に応じて何度でも変更をプッシュすることができます。 待機時間の要件が低いアプリケーションの場合 (たとえば、インデックスを製品在庫の変動と同期させる必要がある場合など)、プッシュ モデルが唯一のオプションです。

  • ドキュメントの接続性と安全な取得は、完全に制御下にあります。 これに対し、インデクサー接続は、Azure AI Search で提供されるセキュリティフィーチャーを使用して認証されます。

Azure AI Search インデックスにデータをプッシュする方法

1 つまたは複数のドキュメントをインデックスに読み込むには、次の API を使用します。

Azure portal を使用したデータのプッシュはサポートされていません。

プッシュ API の概要については、以下を参照してください。

インデックス作成アクション: upload、merge、mergeOrUpload、delete

インデックス作成アクションの種類をドキュメントごとに制御できます。つまり、ドキュメントを全部アップロードするか、既存のドキュメント コンテンツとマージするか、または削除するかを指定できます。

REST API と Azure SDK のどちらを使用する場合でも、データのインポートでは次のドキュメント操作がサポートされます。

  • ドキュメントが新しい場合は挿入され、存在する場合は更新または置き換えられる "upsert" と同様にアップロードします。 インデックスに必要な値がドキュメントにない場合、ドキュメント フィールドの値は null に設定されます。

  • マージ では、既に存在するドキュメントが更新され、見つからないドキュメントが失敗します。 マージは既存の値を置き換えます。 そのため、Collection(Edm.String) 型のフィールドなど、複数の値を含むコレクション フィールドは必ず確認してください。 たとえば、tags フィールドの値が ["budget"] で始まり、値 ["economy", "pool"] でマージを実行した場合、tags フィールドの最終値は ["economy", "pool"] になります。 ["budget", "economy", "pool"] にはなりません。

  • mergeOrUpload。ドキュメントが存在する場合は merge と同様な動作をし、ドキュメントが新しい場合は upload の動作をします。

  • delete。インデックスから指定したドキュメントを削除します。 個々のフィールドを削除する場合は、代わりに merge を使い、問題のフィールドを null に設定します。

インデックスへのデータのプル

プル モデルでは、サポートされているデータ ソースに接続するインデクサーが使用され、データがインデックスに自動的にアップロードされます。 Microsoft のインデクサーは、次のプラットフォームで利用できます。

Microsoft パートナーによって開発およびメインされたサード パーティ製コネクタを使用できます。 詳細とリンクについては、「データ ソース ギャラリー」を参照してください

インデクサーは、インデックスをデータ ソース (通常はテーブル、ビュー、または同等の構造体) に接続し、ソース フィールドをインデックスの同等のフィールドにマップします。 実行中、行セットが自動的に JSON に変換され、指定したインデックスに読み込まれます。 すべてのインデクサーはスケジュールをサポートしているため、データの更新頻度を指定できます。 ほとんどのインデクサーは、変更の追跡を提供します (データ ソースでサポートされている場合)。 インデクサーは、新しいドキュメントを認識するだけでなく、既存のドキュメントの変更と削除を追跡するため、インデックス内のデータをアクティブに管理する必要がありません。

Azure AI Search インデックスにデータをプルする方法

インデクサーベースのインデックス作成には、次のツールと API を使用します。

インデクサー機能は、[Azure portal]、 REST API、および .NET SDK で公開されています。

ポータルを使用する利点は、Azure AI Search では通常、ソース データセットのメタデータを読み取ることでデフォルトのインデックス スキーマを生成できることです。

Search エクスプローラーを使用してデータのインポートを検証する

ドキュメントのアップロード時に事前チェックを実行する簡単な方法は、ポータルで Search エクスプローラーを使用することです。

Screenshot of Search Explorer command in the Azure portal.

エクスプローラーを使用すると、コードを記述することなくインデックスを照会できます。 検索エクスペリエンスは、既定の設定 (単純構文、既定の searchMode クエリ パラメーターなど) に基づきます。 結果は JSON で返されるため、ドキュメント全体を確認できます。

JSON ビューの検索エクスプローラーで実行できるクエリの例を次に示します。 "HotelId" は hotels-sample-index のドキュメント キーです。 フィルターには特定のドキュメントのドキュメント ID を指定します。

{
  "search": "*",
  "filter": "HotelId eq '50'"
}

REST を使っている場合は、この参照クエリで同じ目的を達成できます。

関連項目