Azure AI 検索 の一覧結果をページングする (プレビュー)

Note

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

Important

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

2026-08-01-preview REST API 以降では、カーソルの改ページ (プレビュー) を使用して、サポートされているサービス リソースを一度に 1 ページずつ列挙します。 より多くの結果が得られている場合、サービスは不透明な継続 URL を返します。

この記事では、カーソル コントラクトについて説明し、既存のインデックスをページングする方法について説明します。

Prerequisites

  • サポートされているリスト操作のいずれかのリソースを含むAzure AI 検索 サービス。

  • サービス リソースを一覧表示するためのアクセス許可。 ユーザー アカウントに割り当てられた Search Service 共同作成者ロール (推奨) を使用してキーレス認証を構成するか、管理者 API キーを使用します。

  • 最新の Azure.Search.Documents プレビュー パッケージ: dotnet add package Azure.Search.Documents --prerelease

  • キーレス認証の場合、 Azure.Identity パッケージは次のようになります。 dotnet add package Azure.Identity

    Note

    クライアント ライブラリは、Search Service REST API の 2026-08-01-preview バージョンをサポートする必要があります。 以前のバージョンでは、この記事に示されているカーソル パラメーターは公開されていません。

  • 最新の azure-search-documents プレビュー パッケージ: pip install --pre azure-search-documents

  • キーレス認証の場合、 azure-identity パッケージは次のようになります。 pip install azure-identity

    Note

    クライアント ライブラリは、Search Service REST API の 2026-08-01-preview バージョンをサポートする必要があります。 以前のバージョンでは、この記事に示されているカーソル パラメーターは公開されていません。

  • Search Service REST API の 2026-08-01-preview バージョン。

  • キーレス認証の場合は、各 HTTP 要求の Authorization ヘッダーにMicrosoft Entra ID トークンを含めます。

リスト操作を選択する

2026-08-01-preview カーソル コントラクトは、次のリスト操作に適用されます。

Operation リソースパス
別名の一覧 /aliases
データ ソースの一覧表示 /datasources
インデクサーの一覧表示 /indexers
インデックスの一覧表示 /indexes
インデックス統計を一覧表示 /indexstats
ナレッジ ベースの一覧表示 /knowledgebases
ナレッジ ソースの一覧表示 /knowledgesources
ナレッジ ソース ファイルの一覧表示 /knowledgesources('{knowledge-source-name}')/files
スキルセットを一覧表示する /skillsets
シノニム マップの一覧表示 /synonymmaps

ページをリクエストしてフォロー

次の例では、名前が hotels で始まり、ページあたり最大 50 個のインデックスを要求するインデックスを一覧表示します。 AsyncPageable<SearchIndex>結果を反復処理すると、後続の各ページが自動的に要求されます。

using System;
using Azure;
using Azure.Identity;
using Azure.Search.Documents;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.Models;

string endpoint = Environment.GetEnvironmentVariable(
    "AZURE_SEARCH_ENDPOINT")!;

var options = new SearchClientOptions(
    SearchClientOptions.ServiceVersion.V2026_08_01_Preview);
var client = new SearchIndexClient(
    new Uri(endpoint),
    new AzureCliCredential(),
    options);

AsyncPageable<SearchIndex> indexes = client.GetIndexesAsync(
    search: "hotels",
    pageSize: 50,
    searchType: ListingSearchType.Prefix);

await foreach (SearchIndex index in indexes)
{
    Console.WriteLine(index.Name);
}

Reference:SearchIndexClient.GetIndexesAsync

次の例では、名前が hotels で始まり、ページあたり最大 50 個のインデックスを要求するインデックスを一覧表示します。 ItemPaged結果を反復処理すると、後続の各ページが自動的に要求されます。

import os

from azure.identity import AzureCliCredential
from azure.search.documents.indexes import SearchIndexClient

endpoint = os.getenv("AZURE_SEARCH_ENDPOINT")

with SearchIndexClient(
    endpoint,
    AzureCliCredential(),
    api_version="2026-08-01-preview",
) as client:
    indexes = client.list_indexes(
        select=["name"],
        search="hotels",
        page_size=50,
        search_type="prefix",
    )
    for index in indexes:
        print(index.name)

リファレンス:SearchIndexClient.list_indexes

名前が hotels で始まるインデックスを一覧表示する最初の要求を送信します。 この要求は、最大 50 個のインデックス名を返します。

GET https://<search-service-name>.search.windows.net/indexes?api-version=2026-08-01-preview&search=hotels&searchType=prefix&pageSize=50&$select=name
Authorization: Bearer <access-token>
Accept: application/json

Reference:List Indexes

一致するインデックスが 50 個を超える場合、応答には完全な継続 URL と不透明なトークンを含む @odata.nextLinkが含まれます。 次の応答は省略されています。

{
  "value": [
    {
      "name": "<index-name>"
    }
  ],
  "@odata.nextLink": "https://<search-service-name>.search.windows.net/indexes?api-version=2026-08-01-preview&searchType=prefix&%24select=name&%24skiptoken=<opaque-token>"
}

次のページを要求するには、返された完全な @odata.nextLink 値に GET 要求を送信します。 同じ認証ヘッダーを保持します。

GET <[email protected]>
Authorization: Bearer <access-token>
Accept: application/json

Reference:List Indexes

ターミナル応答には最終的なインデックス名が含まれており、 @odata.nextLinkを省略して、使用可能なページがなくなったことを示します。 結果の順序はカーソル コントラクトの一部ではありません。

{
  "value": [
    {
      "name": "<next-index-name>"
    }
  ]
}

カーソルの動作を処理する

  • 最後のページを検出します。 応答に @odata.nextLinkが含まれている場合にのみ、ページングを続行します。 ターミナル ページではこのプロパティが省略され、応答には @odata.countは含まれません。

  • 継続状態を保持する: 返されたとおりに完全な @odata.nextLink を使用します。 $skiptokenを構築、変更、デコード、または再利用しないでください。 トークンは、前方ページングのみをサポートします。

  • 要求パラメーターの変更: リソース パス、API バージョン、検索プレフィックス、選択したプロパティ、またはページ サイズを変更する新しい初期要求を開始します。 $skiptokenをsearchまたはpageSizeと組み合わせると、HTTP 400 が返されます。

  • コレクションの変更のアカウント: 前方ページングは、コレクションが変更されていない間のみ安定しています。 列挙中にリソースを追加、更新、または削除すると、重複または省略された結果が生成される可能性があります。