Azure AI 検索のクエリ用の MongoDB のAzure Cosmos DBからのデータのインデックス作成 (プレビュー)

Note

Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。

重要

機能、またはマークされたプロパティ (プレビュー) は、サービス レベル アグリーメントの対象ではなく、運用環境のワークロードには推奨されず、一般公開される前に変更または制約される可能性があります。 Azure AI 検索 プレビューの用語は、スタンドアロンでも一般公開されている機能の一部でも、すべてのプレビュー機能に適用されます。

重要

これらの機能は、他のMicrosoft サービスおよびサード パーティのサービスへの接続をサポートします。 これらのサービスの利用は各サービスの利用規約に従うものとし、データが Azure コンプライアンス境界の外部で処理または保存されたり、Azure コンプライアンス境界内に流入したりする場合があります。

データが組織のコンプライアンスと地理的境界の外部に流れるかどうか、および関連する影響、および適切なアクセス許可、境界、承認がプロビジョニングされるかどうかを管理するのは、お客様の責任です。

特定のユース ケースのコンテキストで構築したアプリケーションを慎重に確認およびテストし、すべての適切な決定とカスタマイズを行う責任があります。 これには、メタプロンプト、コンテンツ フィルター、その他の安全システムなどの独自の責任ある AI 軽減策の実装や、アプリケーションが適切な品質、信頼性、セキュリティ、信頼性の標準を満たしていることを確認する機能が含まれます。 詳細については、「Azure AI 検索透過性に関するメモを参照してください。

MongoDB インデクサー (プレビュー) のAzure Cosmos DBは、MongoDB のAzure Cosmos DBからコンテンツをインポートし、Azure AI 検索で検索できるようにします。

この記事では、Cosmos DB に固有の情報を使用して インデクサーを作成 する方法について説明します。 REST API を使用して、すべてのインデクサーに共通する 3 部構成のワークフローを示します。データ ソースの作成、インデックスの作成、インデクサーの作成です。 データ抽出は、インデクサーの作成要求を送信するときに発生します。

用語は混乱を招く可能性があるため、Azure Cosmos DBインデックス作成とAzure AI 検索インデックス作成は異なる操作です。 Azure AI 検索でインデックスを作成し、検索サービスに検索インデックスを読み込みます。

前提 条件

制限

この機能の制限事項は次のとおりです。

  • カスタム クエリは、データ セットを指定するためにサポートされていません。

  • _ts列名は予約語です。 このフィールドが必要な場合は、インデックスを設定するための代替ソリューションを検討してください。

  • MongoDB 属性 $ref は予約語です。 MongoDB コレクションでこれが必要な場合は、インデックスを設定するための代替ソリューションを検討してください。

このコネクタの代わりに、シナリオにこれらの要件がある場合は、Push API/SDK を使用するか、シンクとして < Azure Data Factory Azure AI 検索 index を使用することを検討します。

データ ソースを定義する

データ ソース定義では、データの変更を識別するためのインデックス、資格情報、およびポリシーのデータを指定します。 データ ソースは、複数のインデクサーで使用できるように、独立したリソースとして定義されます。

この呼び出しでは、プレビュー REST API バージョンを指定して、MongoDB API 経由で接続するデータ ソースを作成します。 2020-06-30-preview以降を使用できます。 最新のプレビュー REST API をお勧めします。

  1. データ ソースを作成または更新 して、その定義を設定します。

    POST https://[service name].search.windows.net/datasources?api-version=2026-08-01-preview
    Content-Type: application/json
    api-key: [Search service admin key]
    {
      "name": "[my-cosmosdb-mongodb-ds]",
      "type": "cosmosdb",
      "credentials": {
        "connectionString": "AccountEndpoint=https://[cosmos-account-name].documents.azure.com;AccountKey=[cosmos-account-key];Database=[cosmos-database-name];ApiKind=MongoDb;"
      },
      "container": {
        "name": "[cosmos-db-collection]"
      },
      "dataChangeDetectionPolicy": {
        "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName": "_ts"
      },
      "dataDeletionDetectionPolicy": null,
      "encryptionKey": null,
      "identity": null
    }
    
  2. "type" を "cosmosdb" (必須) に設定します。

  3. "資格情報" を接続文字列に設定します。 次のセクションでは、サポートされている形式について説明します。

  4. "container" をコレクションに設定します。 "name" プロパティは必須であり、インデックスを作成するデータベース コレクションの ID を指定します。 MongoDB のAzure Cosmos DBでは、"query" はサポートされていません。

  5. データが揮発性であり、インデクサーが後続の実行時に新しい項目と更新された項目のみを取得する場合は、"dataChangeDetectionPolicy" を設定します。

  6. ソース アイテムが削除されたときに検索インデックスから検索ドキュメントを削除する場合は、"dataDeletionDetectionPolicy" を設定します。

サポートされている資格情報と接続文字列

インデクサーは、次の接続を使用してコレクションに接続できます。 MongoDB API を対象とする接続の場合は、必ず接続文字列に "ApiKind" を含めます。

エンドポイント URL のポート番号は使用しないでください。 ポート番号を含めると、接続は失敗します。

完全アクセスの接続文字列
{ "connectionString" : "AccountEndpoint=https://<Cosmos DB account name>.documents.azure.com;AccountKey=<Cosmos DB auth key>;Database=<Cosmos DB database id>;ApiKind=MongoDb" }
Azure ポータルの Azure Cosmos DB アカウント ページから Cosmos DB 認証キーを取得するには、左側のウィンドウで Connection String を選択します。 必ずプライマリ パスワードをコピーし、Cosmos DB 認証キーの値をそれに置き換えてください。
マネージド ID接続文字列
{ "connectionString" : "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.DocumentDB/databaseAccounts/<your cosmos db account name>/;(ApiKind=[api-kind];)" }
事前に検索サービスをマネージド IDを使用するように構成し、Cosmos DB アカウント閲覧者ロールのアクセス許可を付与するロールの割り当てを作成しておく必要があります。この接続文字列にはアカウントキーは必要ありません。 詳細については、「マネージド ID を使用してAzure Cosmos DB データベースへのインデクサー接続を設定するを参照してください。

インデックスに検索フィールドを追加する

検索インデックスで、ソース JSON ドキュメントまたはカスタム クエリ プロジェクションの出力を受け入れるフィールドを追加します。 検索インデックス スキーマがソース データと互換性があることを確認します。 Azure Cosmos DB内のコンテンツの場合、検索インデックス スキーマは、データ ソースの Azure Cosmos DB items に対応している必要があります。

  1. インデックスを作成または更新して、データを格納する検索フィールドを定義します。

    POST https://[service name].search.windows.net/indexes?api-version=2026-08-01-preview
    Content-Type: application/json
    api-key: [Search service admin key]
    
    {
        "name": "mysearchindex",
        "fields": [{
            "name": "doc_id",
            "type": "Edm.String",
            "key": true,
            "retrievable": true,
            "searchable": false
        }, {
            "name": "description",
            "type": "Edm.String",
            "filterable": false,
            "searchable": true,
            "sortable": false,
            "facetable": false,
            "suggestions": true
        }]
    }
    
  2. ドキュメント キー フィールド ("key": true) を作成します。 MongoDB コレクションに基づく検索インデックスの場合、ドキュメント キーには "doc_id"、"rid"、または一意の値を含むその他の文字列フィールドを指定できます。 フィールド名とデータ型が両側で同じである限り、フィールド マッピングは必要ありません。

    • "doc_id" は、オブジェクト識別子の "_id" を表します。 インデックスに "doc_id" フィールドを指定すると、インデクサーによってオブジェクト識別子の値が設定されます。

    • "rid" は、Azure Cosmos DBのシステム プロパティです。 インデックスに "rid" フィールドを指定すると、インデクサーによって "rid" プロパティの base64 でエンコードされた値が設定されます。

    • その他のフィールドの場合、検索フィールドの名前はコレクション内で定義されている名前と同じである必要があります。

  3. 検索可能なコンテンツ用の追加フィールドを作成します。 詳細については、 インデックスの作成を 参照してください。

データ型のマッピング

JSON データ型 Azure AI 検索フィールドの種類
ブール Edm.Boolean、Edm.String
整数のような数値 Edm.Int32、Edm.Int64、Edm.String
浮動小数点のように見える数値 Edm.Double、Edm.String
文字列 Edm.String
["a"、"b"、"c"など、プリミティブ型の配列 Collection(Edm.String)
日付のような文字列 Edm.DateTimeOffset、Edm.String
{ "type": "Point", "coordinates": [long, lat] } などの GeoJSON オブジェクト Edm.GeographyPoint
その他の JSON オブジェクト N/a

MongoDB インデクサーのAzure Cosmos DBを構成して実行する

インデックスとデータ ソースが作成されたら、インデクサーを作成する準備ができました。 インデクサーの構成では、実行時の動作を制御する入力、パラメーター、およびプロパティを指定します。

  1. インデクサーを作成または更新するには、インデクサー に名前を付け、データ ソースとターゲット インデックスを参照します。

    POST https://[service name].search.windows.net/indexers?api-version=2026-08-01-preview
    Content-Type: application/json
    api-key: [search service admin key]
    {
        "name" : "[my-cosmosdb-indexer]",
        "dataSourceName" : "[my-cosmosdb-mongodb-ds]",
        "targetIndexName" : "[my-search-index]",
        "disabled": null,
        "schedule": null,
        "parameters": {
            "batchSize": null,
            "maxFailedItems": 0,
            "maxFailedItemsPerBatch": 0,
            "base64EncodeKeys": false,
            "configuration": {}
            },
        "fieldMappings": [],
        "encryptionKey": null
    }
    
  2. フィールド 名または型に違いがある場合、または検索インデックスに複数のバージョンのソース フィールドが必要な場合は、フィールド マッピングを指定します。

  3. その他のプロパティの詳細については、「 インデクサーの作成 」を参照してください。

インデクサーは、作成時に自動的に実行されます。 これを防ぐには、"無効" を true に設定します。 インデクサーの実行を制御するには、 必要に応じてインデクサーを実行 するか、 スケジュールに従います。

インデクサーの状態を確認する

インデクサーの状態と実行履歴を監視するには、 インデクサーの状態の取得 要求を送信します。

GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2026-08-01-preview
  Content-Type: application/json  
  api-key: [admin key]

応答には、状態と処理された項目の数が含まれます。 次の例のようになります。

    {
        "status":"running",
        "lastResult": {
            "status":"success",
            "errorMessage":null,
            "startTime":"2022-02-21T00:23:24.957Z",
            "endTime":"2022-02-21T00:36:47.752Z",
            "errors":[],
            "itemsProcessed":1599501,
            "itemsFailed":0,
            "initialTrackingState":null,
            "finalTrackingState":null
        },
        "executionHistory":
        [
            {
                "status":"success",
                "errorMessage":null,
                "startTime":"2022-02-21T00:23:24.957Z",
                "endTime":"2022-02-21T00:36:47.752Z",
                "errors":[],
                "itemsProcessed":1599501,
                "itemsFailed":0,
                "initialTrackingState":null,
                "finalTrackingState":null
            },
            ... earlier history items
        ]
    }

実行履歴には、最後に完了した実行のうち最大 50 個が含まれています。これは、最新の実行が最初になるように、時系列の逆順に並べ替えられます。

新しいドキュメントと変更されたドキュメントのインデックス作成

インデクサーが検索インデックスを完全に設定したら、後続のインデクサー実行で、データベース内の新しいドキュメントと変更されたドキュメントのみに増分インデックスを作成することが必要になる場合があります。

増分インデックス作成を有効にするには、データ ソース定義で "dataChangeDetectionPolicy" プロパティを設定します。 このプロパティは、データで使用される変更追跡メカニズムをインデクサーに通知します。

Azure Cosmos DBインデクサーの場合、サポートされている唯一のポリシーは、Azure Cosmos DBによって提供される HighWaterMarkChangeDetectionPolicy (timestamp) プロパティを使用する _ts です。

次の例は、変更検出ポリシーを含む データ ソース定義 を示しています。

"dataChangeDetectionPolicy": {
    "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
    "highWaterMarkColumnName": "_ts"
},

削除されたドキュメントのインデックス作成

コレクションから行を削除する場合は、通常、それらの行も検索インデックスから削除する必要があります。 データ削除検出ポリシーの目的は、削除されたデータ項目を効率的に識別することです。 現在、サポートされている唯一のポリシーは Soft Delete ポリシーです (削除には何らかのフラグが付けられます)。これは、データ ソース定義で次のように指定されています。

"dataDeletionDetectionPolicy": {
    "@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
    "softDeleteColumnName" : "the property that specifies whether a document was deleted",
    "softDeleteMarkerValue" : "the value that identifies a document as deleted"
}

カスタム クエリを使用している場合は、 softDeleteColumnName によって参照されるプロパティがクエリによって投影されていることを確認します。

次の例では、ソフト削除ポリシーを使用してデータソースを作成します。

POST https://[service name].search.windows.net/datasources?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [Search service admin key]

{
    "name": "my-cosmosdb-mongodb-ds",
    "type": "cosmosdb",
    "credentials": {
        "connectionString": "AccountEndpoint=https://[cosmos-account-name].documents.azure.com;AccountKey=[cosmos-account-key];Database=[cosmos-database-name];ApiKind=MongoDb"
    },
    "container": { "name": "[my-cosmos-collection]" },
    "dataChangeDetectionPolicy": {
        "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName": "_ts"
    },
    "dataDeletionDetectionPolicy": {
        "@odata.type": "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
        "softDeleteColumnName": "isDeleted",
        "softDeleteMarkerValue": "true"
    }
}

次の手順

イン デクサーの実行方法、状態の 監視方法、イン デクサーの実行スケジュールを制御できるようになりました。 次の記事は、Azure Cosmos DBからコンテンツをプルするインデクサーに適用されます。