Azure Data Factory を使用して外部データ ソースからのデータのインデックスを作成する

完了

Azure に存在しない外部データを追加することは、組織の検索ソリューションで一般的なニーズです。 Azure AI Search は柔軟であり、さまざまな方法でデータを作成してインデックスにプッシュできます。

Azure Data Factory (ADF) を使用して検索インデックスにデータをプッシュする

最初の方法は、ADF を使用してインデックスにデータをプッシュするためのゼロコード オプションです。 ADF には、約 100 の異なるデータ ストアへの接続が付属しています。 HTTP や REST などのコネクタを使用すると、無制限の数のデータ ストアを接続できます。 これらのデータ ストアは、パイプラインのソースまたはターゲット (コピー アクティビティのシンクと呼ばれます) として使用されます。

Azure AI Search インデックス コネクタは、コピー アクティビティのシンクとして使用できます。

ADF パイプラインを作成してデータを検索インデックスにプッシュする

検索インデックスにデータをプッシュするために使用する必要がある手順と ADF パイプラインは次のとおりです。

  1. データを格納するすべてのフィールドを含む Azure AI Search インデックスを作成します。
  2. データのコピー ステップを含むパイプラインを作成します。
  3. データが存在する場所へのデータ ソース接続を作成します。
  4. シンクを作成して検索インデックスに接続します。
  5. ソース データのフィールドを検索インデックスにマップします。
  6. パイプラインを実行して、データをインデックスにプッシュします。

たとえば、外部でホストされている 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 サブスクリプションとデータ ファクトリ名を選択します。

Azure Data Factory と [取り込み] の選択のスクリーンショット。

  1. [取り込み 選択します。

  2. [次へ] を選択します。

    データが変更され、インデックスを -date up-to保持する必要がある場合は、パイプラインのスケジュールを設定できます。 この例では、データを 1 回インポートします。

ソースのリンクされたサービスを作成する

  1. [ソース 種類]で、[HTTP 選択します。

  2. 接続の横にある [+ 新しい接続] を選択します。

    HTTP のリンクされたサービスの作成を示すスクリーンショット。

  3. [新しい接続] ウィンドウの [名]「dataLocation 入力します。

  4. ベース URLに、JSON ファイルが存在する場所を入力します。この例では、「https://raw.githubusercontent.com/Azure-Samples/azure-sql-db-import-data/main/json/user1.json」と入力します。

  5. [認証の種類]で、[匿名 選択します。

  6. を選択してを作成します。

  7. [次へ] を選択します。

    配置されたサービスの構成ページのスクリーンショット。

  8. ファイル形式ので、JSON 選択します。

  9. [次へ] を選択します。

ターゲットのリンクされたサービスを作成する

  1. [宛先 種類]で、[Azure Search 選択します。 次に、[+ 新しい接続] を選択します。

    AI Search へのリンクされたサービスの作成を示すスクリーンショット。

  2. [新しい接続] ウィンドウの [名前] search_index」と入力します。

  3. Azure サブスクリプション で、Azure サブスクリプションを選択します。

  4. サービス名で、Azure AI Search サービスを選択します。

  5. を選択してを作成します。

  6. [ターゲット データ ストア] ウィンドウの [ターゲット で、作成した検索インデックスを選択します。

ソース フィールドをターゲット フィールドにマップする

  1. [次へ] を選択します。

    スキーマ マッピング ペインのスクリーンショット。

  2. JSON 属性に一致するフィールド名を持つインデックスを作成した場合、ADF は検索インデックス内のフィールドに JSON を自動的にマップします。

  3. 上記の例では、JSON ドキュメントの 3 つのフィールドがインデックス内のフィールドにマッピングされている必要があります。

  4. フィールドをマップし、[次へ] 選択します。

  5. [設定] ペインの [タスク名] に、「jsonToSearchIndex 入力します。

  6. [次へ] を選択します。

パイプラインを実行してデータをインデックスにプッシュする

  1. [の概要] ウィンドウで、[次 ] を選択します。

    パイプラインのデプロイが完了したことを示すスクリーンショット。

  2. パイプラインが検証されてデプロイされたら、[完了] 選択

パイプラインがデプロイされ、実行されました。 JSON ドキュメントが検索インデックスに追加されます。 Azure portal を使用して、検索エクスプローラーで検索を実行できます。 インポートされた JSON データが表示されます。

検索インデックス内の JSON データのスクリーンショット。

これらの手順に従って、データをインデックスにプッシュする方法を確認しました。 既定で作成したパイプラインは、更新をインデックスにマージします。 JSON データを修正してパイプラインを再実行すると、検索インデックスが更新されます。 パイプラインを実行するたびにデータを置き換える場合にのみ、書き込み動作を変更してアップロードできます。

組み込みの Azure AI Search をリンクされたサービスとして使用する場合の制限事項

現時点では、シンクとしての Azure AI Search のリンクされたサービスでは、次のフィールドのみがサポートされています。

Azure AI Search のデータ型
Int32
Int64
ダブル
ボーリアン
DataTimeOffset

つまり、ComplexTypes と配列は現在サポートされていません。 上記の JSON ドキュメントを見ると、顧客のすべての電話番号をマップすることはできません。 最初の電話番号のみがマップされています。