次の方法で共有


.NET Aspire Azure AI検索ドキュメントの統合

この記事では、.NET AspireAzure AI 検索ドキュメント clientを使用する方法について説明します。 Aspire.Azure.Search.Documents ライブラリは、Azure Search に接続するための依存関係挿入 (DI) コンテナーに SearchIndexClient を登録するために使用されます。 対応する正常性チェックとログ記録が有効になります。

SearchIndexClientの使用方法について詳しく知りたい場合は、「Azureの使用方法」をご覧ください。C# .NET アプリケーションにおけるドキュメント検索について。

作業の開始

  • Azure サブスクリプション: 無料の用に作成します。
  • Search サービス: AI Search サービス リソースを作成

.NET Aspire Azure AI Search Documents の統合を開始するには、📦Aspireをインストールします。Azure.Search.Documents NuGet パッケージは、clientを使用するプロジェクト、つまり、Azure AI Search Documents clientを使用するアプリケーションのプロジェクトです。

dotnet add package Aspire.Azure.Search.Documents

詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。

使用例

client-consuming プロジェクトの Program.cs ファイルで、拡張メソッドを呼び出して、依存関係挿入コンテナーを介して使用する SearchIndexClient を登録します。 AddAzureSearchClient メソッドは、接続名パラメーターを受け取ります。

builder.AddAzureSearchClient("searchConnectionName");

その後、依存関係の挿入を使用して SearchIndexClient インスタンスを取得できます。 たとえば、サービスの例から client を取得するには、次のようにします。

public class ExampleService(SearchIndexClient indexClient)
{
    // Use indexClient
}

SearchIndexClient.GetSearchClient メソッドを次のように呼び出すことで、クエリに使用できる SearchClient を取得することもできます。

public class ExampleService(SearchIndexClient indexClient)
{
    public async Task<long> GetDocumentCountAsync(
        string indexName,
        CancellationToken cancellationToken)
    {
        var searchClient = indexClient.GetSearchClient(indexName);

        var documentCountResponse = await searchClient.GetDocumentCountAsync(
            cancellationToken);

        return documentCountResponse.Value;
    }
}

詳細については、SearchIndexClientの使用例については、Azure AI Search client ライブラリの .NET を参照してください。

アプリ ホストの使用状況

IDistributedApplicationBuilder Azure AI ホスティング のサポートを追加するには、📦Aspireをインストールします。ホスティング。Azure.アプリ ホスト プロジェクトで NuGet パッケージ 検索します。

dotnet add package Aspire.Hosting.Azure.Search

AppHostProgram.cs ファイルで、Azure Search サービスを追加し、次の方法を使用して接続を使用します。

var builder = DistributedApplication.CreateBuilder(args);

var search = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureSearch("search")
    : builder.AddConnectionString("search");

var myService = builder.AddProject<Projects.MyService>()
                       .WithReference(search);

AddAzureSearch メソッドは、ConnectionStrings:search 構成キーの下にある AppHost の構成 ("ユーザー シークレット" など) から接続情報を読み取ります。 WithReference メソッドは、その接続情報を、MyService プロジェクトの search という名前の接続文字列に渡します。 MyServiceProgram.cs ファイルでは、次を使用して接続を消費できます。

builder.AddAzureSearch("search");

設定

.NET Aspire Azure Azure 検索ライブラリには、プロジェクトの要件と規則に基づいて Azure Search Service を構成するための複数のオプションが用意されています。 Endpoint または ConnectionString を指定する必要があることに注意してください。

接続文字列を使用する

接続は、Endpoint={endpoint};Key={key};形式の [キーとエンドポイント] タブから構築できます。 builder.AddAzureSearch()を呼び出すときに接続文字列の名前を指定できます。

builder.AddAzureSearch("searchConnectionName");

接続文字列は、ConnectionStrings 構成セクションから取得されます。 次の 2 つの接続形式がサポートされています。

アカウント エンドポイント

Endpointを使用することをお勧めします。AzureSearchSettings.Credential プロパティを使用して接続を確立します。 資格情報が構成されていない場合は、DefaultAzureCredential が使用されます。

{
  "ConnectionStrings": {
    "searchConnectionName": "https://{search_service}.search.windows.net/"
  }
}

接続文字列

または、カスタム接続文字列を使用することもできます。

{
  "ConnectionStrings": {
    "searchConnectionName": "Endpoint=https://{search_service}.search.windows.net/;Key={account_key};"
  }
}

構成プロバイダーを使用する

.NET Aspire Azure AI Search ライブラリでは、Microsoft.Extensions.Configurationがサポートされています。 Aspire:Azure:Search:Documents キーを使用して、構成から AzureSearchSettingsSearchClientOptions を読み込みます。 いくつかのオプションを構成する appsettings.json の例:

{
  "Aspire": {
    "Azure": {
      "Search": {
        "Documents": {
          "DisableTracing": false,
        }
      }
    }
  }
}

インライン デリゲートを使用する

Action<AzureSearchSettings> configureSettings デリゲートを渡して、コードからのトレースを無効にするなど、一部またはすべてのオプションをインラインで設定することもできます。

builder.AddAzureSearch(
    "searchConnectionName",
    static settings => settings.DisableTracing = true);

AddAzureSearch メソッドの省略可能な Action<IAzureClientBuilder<SearchIndexClient, SearchClientOptions>> configureClientBuilder パラメーターを使用して、SearchClientOptions を設定することもできます。 たとえば、この clientの client ID を設定するには、

builder.AddAzureSearch(
    "searchConnectionName",
    configureClientBuilder: builder => builder.ConfigureOptions(
        static options => options.Diagnostics.ApplicationId = "CLIENT_ID"));

健康診断

既定では、.NET.NET Aspire 統合により、すべてのサービス 正常性チェック が有効になります。 詳細については、.NET.NET Aspire 統合の概要を参照してください。

.NET Aspire Azure AI Search Documents 統合では、SearchIndexClientGetServiceStatisticsAsync メソッドを呼び出してサービスが使用可能であることを確認する 1 つの正常性チェックが実装されます。

可観測性とテレメトリ

統合により、ログ記録、トレース、メトリックの構成が自動的に設定されます。これは、監視の柱 とも呼ばれます。 統合の可観測性とテレメトリの詳細については、統合の概要 参照してください。 バッキング サービスによっては、一部の統合でこれらの機能の一部のみがサポートされる場合があります。 たとえば、一部の統合ではログ記録とトレースがサポートされますが、メトリックはサポートされません。 テレメトリ機能は、「構成」セクションに記載されている手法を使用して無効にすることもできます。

伐採

.NET Aspire Azure AI Search Documents 統合では、次のログ カテゴリが使用されます。

  • Azure
  • Azure.Core
  • Azure.Identity

関連項目