次の方法で共有


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

含まれるもの:ホスティング統合Client 統合

手記

この統合は .NET.NET Aspire Community Toolkit の一部であり、.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 Aspire Meilisearch client 統合を開始するには、📦 CommunityToolkit をインストールします。Aspire.Meilisearchclient-consuming プロジェクト、つまり Meilisearch clientを使用するアプリケーションのプロジェクト内の NuGet パッケージです。

dotnet add package CommunityToolkit.Aspire.Meilisearch

Meilisearch client を追加する

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

builder.AddMeilisearchClient(connectionName: "meilisearch");

アドバイス

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

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

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

キー付き Meilisearch client を追加する

接続名が異なる複数の 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 Aspire Meilisearch client 統合には、プロジェクトの要件と規則に基づいて server 接続を構成するための複数のオプションが用意されています。

接続文字列を使用する

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 Aspire Meilisearch 統合は、構成済みの client で IsHealthyAsyncを実行します。 結果が true場合、正常性チェックは正常と見なされます。それ以外の場合は異常です。 同様に、例外がある場合、健康診断は不健康と見なされ、エラーは健康診断の失敗を通じて伝達されます。

関連項目