共用方式為


.NET .NET Aspire 社群工具包 Meilisearch 整合

包括:裝載整合Client 整合

注意

這項整合是 .NET.NET Aspire 社群工具組 的一部分, 不受 .NET.NET Aspire 小組正式支援。

在本文中,您將瞭解如何使用 .NET.NET Aspire Meilisearch 託管整合,來執行 Meilisearch 容器,並透過 Meilisearchclient存取它。

代管整合

若要執行 Meilisearch 容器,請在 📦 專案中安裝 Aspire CommunityToolkit.Hosting.Meilisearch NuGet 套件。

dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch

如需詳細資訊,請參閱 dotnet add package管理 .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 數據。 數據掛載會掛載在 Windows 的 C:\Meilisearch\Data 路徑上(或 /Meilisearch/Data的 Unix 路徑),在主機上的 Meilisearch 容器中。 如需資料系結掛接的詳細資訊,請參閱 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 專案中的 NuGet 套件,也就是使用 Meilisearch client的應用程式專案。

dotnet add package CommunityToolkit.Aspire.Meilisearch

新增 Meilisearch client

Program.cs取用專案的 client 檔案中,在任何 Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClient 上呼叫 IHostApplicationBuilder 擴充方法,以註冊 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,則健康檢查會被視為健康,否則就是不健康。 同樣地,如果有例外狀況,健康情況檢查會被視為狀況不良,錯誤會透過健康情況檢查失敗傳播。

另請參閱