.NET .NET Aspire 社群工具包 Meilisearch 整合
注意
這項整合是 .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
,則健康檢查會被視為健康,否則就是不健康。 同樣地,如果有例外狀況,健康情況檢查會被視為狀況不良,錯誤會透過健康情況檢查失敗傳播。