Azure Data Factory を使用して外部データ ソースからのデータのインデックスを作成する
Azure に存在しない外部データを追加することは、組織の検索ソリューションで一般的なニーズです。 Azure AI Search は柔軟であり、さまざまな方法でデータを作成してインデックスにプッシュできます。
Azure Data Factory (ADF) を使用して検索インデックスにデータをプッシュする
最初の方法は、ADF を使用してインデックスにデータをプッシュするためのゼロコード オプションです。 ADF には、約 100 の異なるデータ ストアへの接続が付属しています。 HTTP や REST などのコネクタを使用すると、無制限の数のデータ ストアを接続できます。 これらのデータ ストアは、パイプラインのソースまたはターゲット (コピー アクティビティのシンクと呼ばれます) として使用されます。
Azure AI Search インデックス コネクタは、コピー アクティビティのシンクとして使用できます。
ADF パイプラインを作成してデータを検索インデックスにプッシュする
検索インデックスにデータをプッシュするために使用する必要がある手順と ADF パイプラインは次のとおりです。
- データを格納するすべてのフィールドを含む Azure AI Search インデックスを作成します。
- データのコピー ステップを含むパイプラインを作成します。
- データが存在する場所へのデータ ソース接続を作成します。
- シンクを作成して検索インデックスに接続します。
- ソース データのフィールドを検索インデックスにマップします。
- パイプラインを実行して、データをインデックスにプッシュします。
たとえば、外部でホストされている JSON 形式の顧客データがあるとします。 これらの顧客を検索インデックスにコピーする必要があります。 JSON は次の形式です。
{
"_id": "5fed1b38309495de1bc4f653",
"firstName": "Sims",
"lastName": "Arnold",
"isAlive": false,
"age": 35,
"address": {
"streetAddress": "Sumner Place",
"city": "Canoochee",
"state": "Palau",
"postalCode": 1558
},
"phoneNumbers": [
{
"type": "home",
"number": "+1 (830) 465-2965"
},
{
"type": "home",
"number": "+1 (889) 439-3632"
}
]
}
検索インデックスを作成する
Azure AI Search サービスと、この情報を格納するインデックスを作成します。 Azure AI Search ソリューションの作成 モジュールを完了している場合は、これを行う方法を確認しました。 手順に従って検索サービスを作成しますが、データのインポート時点で停止します。 インデックスにデータをプッシュする場合、インデクサーまたはスキルセットを作成する必要はありません。
インデックスを作成し、次のフィールドとプロパティを追加します。
現時点では、最初にインデックスを作成する必要があります。ADF ではインデックスを作成できないためです。
ADF データコピー ツールを使用してパイプラインを作成する
Azure Data Factory Studio を開き、Azure サブスクリプションとデータ ファクトリ名を選択します。
[取り込み 選択します。
[次へ] を選択します。
注
データが変更され、インデックスを -date up-to保持する必要がある場合は、パイプラインのスケジュールを設定できます。 この例では、データを 1 回インポートします。
ソースのリンクされたサービスを作成する
[ソース 種類]で、[HTTP 選択します。
接続の横にある [+ 新しい接続] を選択します。
[新しい接続] ウィンドウの [名]「dataLocation 入力します。
ベース URLに、JSON ファイルが存在する場所を入力します。この例では、「https://raw.githubusercontent.com/Azure-Samples/azure-sql-db-import-data/main/json/user1.json」と入力します。
[認証の種類]で、[匿名 選択します。
を選択してを作成します。
[次へ] を選択します。
ファイル形式ので、JSON 選択します。
[次へ] を選択します。
ターゲットのリンクされたサービスを作成する
[宛先 種類]で、[Azure Search 選択します。 次に、[+ 新しい接続] を選択します。
[新しい接続] ウィンドウの [名前] 「search_index」と入力します。
Azure サブスクリプション で、Azure サブスクリプションを選択します。
サービス名で、Azure AI Search サービスを選択します。
を選択してを作成します。
[ターゲット データ ストア] ウィンドウの [ターゲット で、作成した検索インデックスを選択します。
ソース フィールドをターゲット フィールドにマップする
[次へ] を選択します。
JSON 属性に一致するフィールド名を持つインデックスを作成した場合、ADF は検索インデックス内のフィールドに JSON を自動的にマップします。
上記の例では、JSON ドキュメントの 3 つのフィールドがインデックス内のフィールドにマッピングされている必要があります。
フィールドをマップし、[次へ] 選択します。
[設定] ペインの [タスク名] に、「jsonToSearchIndex 入力します。
[次へ] を選択します。
パイプラインを実行してデータをインデックスにプッシュする
パイプラインがデプロイされ、実行されました。 JSON ドキュメントが検索インデックスに追加されます。 Azure portal を使用して、検索エクスプローラーで検索を実行できます。 インポートされた JSON データが表示されます。
これらの手順に従って、データをインデックスにプッシュする方法を確認しました。 既定で作成したパイプラインは、更新をインデックスにマージします。 JSON データを修正してパイプラインを再実行すると、検索インデックスが更新されます。 パイプラインを実行するたびにデータを置き換える場合にのみ、書き込み動作を変更してアップロードできます。
組み込みの Azure AI Search をリンクされたサービスとして使用する場合の制限事項
現時点では、シンクとしての Azure AI Search のリンクされたサービスでは、次のフィールドのみがサポートされています。
Azure AI Search のデータ型 |
---|
糸 |
Int32 |
Int64 |
ダブル |
ボーリアン |
DataTimeOffset |
つまり、ComplexTypes と配列は現在サポートされていません。 上記の JSON ドキュメントを見ると、顧客のすべての電話番号をマップすることはできません。 最初の電話番号のみがマップされています。