共用方式為


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

包含:包含主機整合 —&— Client

注意

此整合為.NET.NET Aspire社群工具組的一部分,且不由.NET團隊正式支援。

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

代管整合

若要執行 Meilisearch 容器,請在應用程式主機專案中安裝 Aspire NuGet 套件。

dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch

如需詳細資訊,請參閱 dotnet add packageManage package dependencies in .NET applications

新增 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.NET Aspire Meilisearch 用戶端整合,請在用戶端取用專案中安裝 📦 CommunityToolkit.Aspire.Meilisearch NuGet 套件,也就是使用 Meilisearch 用戶端的應用程式專案。

dotnet add package CommunityToolkit.Aspire.Meilisearch

新增 Meilisearch 用戶端

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

另請參閱