次の方法で共有


.NET .NET Aspire Community Toolkit Meilisearch との統合

含まれているもの:ホスティング統合が含まれています ホスティング統合 —および— Client 統合が含まれていますClient 統合

手記

この統合は、.NET.NET Aspire Community Toolkit の一部であり、.NET.NET Aspire チームによって正式にサポートされていません。

この記事では、 Meilisearch ホスティング統合を使用して Meilisearch コンテナー 実行し、Meilisearch クライアント経由でアクセスする方法について説明します。

ホスティング統合

Meilisearch コンテナーを実行するには、 📦 CommunityToolkit.Aspire をインストールします。アプリ ホスト プロジェクトの Hosting.Meilisearch NuGet パッケージ。

dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch

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

Meilisearch リソースを追加する

アプリ ホスト プロジェクトで、AddMeilisearch 拡張メソッドを使用して Meilisearch 統合を登録して使用し、Meilisearch コンテナーをアプリケーション ビルダーに追加します。

var builder = DistributedApplication.CreateBuilder(args);

var meilisearch = builder.AddMeilisearch("meilisearch");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(meilisearch);

// After adding all resources, run the app...

.NET .NET Aspire 前の例で示したように、docker.io/getmeili/meilisearch イメージでコンテナー イメージをアプリ ホストに追加すると、ローカル コンピューターに新しい Meilisearch インスタンスが作成されます。 Meilisearch リソース (meilisearch 変数) への参照が ExampleProjectに追加されます。 Meilisearch リソースには、マスター キーが指定されていない場合に、master key メソッドを使用してランダムに生成された CreateDefaultPasswordParameter が含まれます。

詳細については、「 コンテナー リソースのライフサイクル」を参照してください。

データ ボリュームを使用して Meilisearch リソースを追加する

Meilisearch リソースにデータ ボリュームを追加するには、Meilisearch リソースで Aspire.Hosting.MeilisearchBuilderExtensions.WithDataVolume メソッドを呼び出します。

var builder = DistributedApplication.CreateBuilder(args);

var meilisearch = builder.AddMeilisearch("meilisearch")
                         .WithDataVolume();

builder.AddProject<Projects.ExampleProject>()
       .WithReference(meilisearch);

// After adding all resources, run the app...

データ ボリュームは、Meilisearch データをコンテナーのライフサイクル外に保持するために使用されます。 データ ボリュームは Meilisearch コンテナーの /meili_data パスにマウントされ、name パラメーターが指定されていない場合、名前はランダムに生成されます。 データ ボリュームの詳細と、 バインド マウントよりも優先される理由の詳細については、「 Docker ドキュメント: ボリューム」を参照してください。

データ バインド マウントを使用して Meilisearch リソースを追加する

Meilisearch リソースにデータ バインド マウントを追加するには、Aspire.Hosting.MeilisearchBuilderExtensions.WithDataBindMount メソッドを呼び出します。

var builder = DistributedApplication.CreateBuilder(args);

var meilisearch = builder.AddMeilisearch("meilisearch")
                         .WithDataBindMount(
                             source: @"C:\Meilisearch\Data");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(meilisearch);

// After adding all resources, run the app...

大事な

データ バインド マウント の機能は ボリュームと比較して限られており、パフォーマンス、移植性、セキュリティが向上し、運用環境に適しています。 ただし、バインド マウントを使用すると、ホスト システム上のファイルに直接アクセスして変更できるため、リアルタイムの変更が必要な開発とテストに最適です。

データ バインド マウントは、ホスト マシンのファイルシステムに依存して、コンテナーの再起動の間に Meilisearch データを保持します。 データ バインド マウントは、Meilisearch コンテナー内のホスト コンピューター上の Windows 上の C:\Meilisearch\Data (または /Meilisearch/Dataの Unix) パスにマウントされます。 データ バインド マウントの詳細については、「 Docker ドキュメント: バインド マウント」を参照してください。

マスター キー パラメーターを使用して Meilisearch リソースを追加する

コンテナー イメージで使用されるマスター キーを明示的に指定する場合は、これらの資格情報をパラメーターとして指定できます。 次の代替例を考えてみましょう。

var builder = DistributedApplication.CreateBuilder(args);

var masterkey = builder.AddParameter("masterkey", secret: true);
var meilisearch = builder.AddMeilisearch("meilisearch", masterkey);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(meilisearch);

// After adding all resources, run the app...

パラメーターの指定の詳細については、「外部パラメーターの」を参照してください。

Client 統合

.NET .NET Aspire Meilisearch クライアント統合を開始するには、📦 CommunityToolkit.Aspire をインストールします。クライアントを使用するプロジェクト (つまり、Meilisearch クライアントを使用するアプリケーションのプロジェクト) の Meilisearch NuGet パッケージ。

dotnet add package CommunityToolkit.Aspire.Meilisearch

Meilisearch クライアントを追加する

クライアントを使用するプロジェクトの Program.cs ファイルで、任意の Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClientIHostApplicationBuilder 拡張メソッドを呼び出して、依存関係挿入コンテナーを介して使用する MeilisearchClient を登録します。 このメソッドは、接続名パラメーターを受け取ります。

builder.AddMeilisearchClient(connectionName: "meilisearch");

アドバイス

connectionName パラメーターは、アプリ ホスト プロジェクトに Meilisearch リソースを追加するときに使用する名前と一致する必要があります。 詳細については、「 Meilisearch リソースの追加」を参照してください。

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

public class ExampleService(MeilisearchClient client)
{
    // Use client...
}

キー付き Meilisearch クライアントを追加する

接続名が異なる複数の MeilisearchClient インスタンスを登録する場合があります。 キー付き Meilisearch クライアントを登録するには、Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddKeyedMeilisearchClient を呼び出します。

builder.AddKeyedMeilisearchClient(name: "products");
builder.AddKeyedMeilisearchClient(name: "orders");

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

public class ExampleService(
    [FromKeyedServices("products")] MeilisearchClient productsClient,
    [FromKeyedServices("orders")] MeilisearchClient ordersClient)
{
    // Use clients...
}

キー付きサービスの詳細については、「 .NET 依存関係の挿入: キー付きサービス」を参照してください。

構成

.NET .NET Aspire Meilisearch クライアント統合には、プロジェクトの要件と規則に基づいてサーバー接続を構成するための複数のオプションが用意されています。

接続文字列を使用する

ConnectionStrings 構成セクションの接続文字列を使用する場合は、builder.AddMeilisearchClientを呼び出すときに接続文字列の名前を指定できます。

builder.AddMeilisearchClient("meilisearch");

その後、接続文字列は ConnectionStrings 構成セクションから取得されます。

{
  "ConnectionStrings": {
    "meilisearch": "Endpoint=http://localhost:19530/;MasterKey=123456!@#$%"
  }
}

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

.NET Aspire Meilisearch Client 統合では、Microsoft.Extensions.Configurationがサポートされています。 CommunityToolkit.Aspire.Meilisearch.MeilisearchClientSettings キーを使用して、構成から Aspire:Meilisearch:Client を読み込みます。 いくつかのオプションを構成する appsettings.json の例を次に示します。

{
  "Aspire": {
    "Meilisearch": {
      "Client": {
        "Endpoint": "http://localhost:19530/",
        "MasterKey": "123456!@#$%"
      }
    }
  }
}

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

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

builder.AddMeilisearchClient(
    "meilisearch",
    static settings => settings.MasterKey = "123456!@#$%");

Clientの統合の健全性チェック

.NET .NET Aspire Meilisearch 統合は、構成済みのクライアントを用いて IsHealthyAsyncを実行します。 結果が true場合、正常性チェックは正常と見なされます。それ以外の場合は異常です。 同様に、例外がある場合、健康診断は不健康と見なされ、エラーは健康診断の失敗を通じて伝達されます。

関連項目