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

完了

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

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

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

Azure AI 検索インデックス コネクタは、コピー アクティビティにおけるシンクとして使用できます。

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

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

  1. データを保存したいすべてのフィールドを含む Azure AI 検索インデックスを作成します。
  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 検索サービスと、この情報を保存するインデックスを作成します。 「Azure AI 検索ソリューションの作成」モジュールを完了している場合は、これを行う方法は確認済みということになります。 手順に従って検索サービスを作成しますが、データのインポート時点で停止してください。 インデックスにデータをプッシュする場合、インデクサーまたはスキルセットを作成する必要はありません。

インデックスを作成し、次のフィールドとプロパティを追加します。

A screenshot of the search index field definitions.

ADF ではインデックスを作成できないため、現時点では、最初にインデックスを作成する必要があります。

ADF データコピー ツールを使用してパイプラインを作成する

Azure Data Factory Studio を開き、ご自分の Azure サブスクリプションとデータ ファクトリ名を選択します。

A screenshot of Azure Data Factory and selecting ingest.

  1. [取り込む] を選択します。

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

    注意

    ご自分のデータが変更され、インデックスを最新の状態に保つ必要がある場合は、パイプラインのスケジュールを設定できます。 この例では、データを 1 回インポートします。

ソース リンク サービスの作成

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

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

    A screenshot showing creating an HTTP linked service.

  3. [新しい接続] ペインの [名前] に「dataLocation」と入力します。

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

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

  6. [作成] を選択します。

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

    A screenshot of the configuration page of the lined service.

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

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

ターゲット リンク サービスの作成

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

    A screenshot showing creating a linked service to AI Search.

  2. [新しい接続] ペインの [名前] に「search_index」と入力します。

  3. [Azure サブスクリプション] で、ご使用の Azure サブスクリプションを選択します。

  4. [サービス名] で、Azure AI 検索サービスを選択します。

  5. [作成] を選択します

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

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

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

    A screenshot of the schema mapping pane.

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

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

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

  5. [設定] ウィンドウの [タスク名] に「jsonToSearchIndex」と入力します。

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

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

  1. [概要] ペインで、[次へ] を選択します。

    A screenshot showing the pipeline deployment complete.

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

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

A screenshot of the JSON data in the search index.

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

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

現在、シンクとしての Azure AI 検索リンク サービスでサポートされているのは、以下のフィールドだけです。

Azure AI Search のデータ型
String
Int32
Int64
Double
Boolean
DataTimeOffset

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