包含: - 
Client 集成
注意
此集成是社区工具包的Aspire一部分,不受团队正式支持Aspire。
本文介绍如何使用 Aspire Meilisearch 托管集成运行 Meilisearch 容器并通过 Meilisearch 客户端访问它。
托管集成
若要运行 Meilisearch 容器,请安装 📦 CommunityToolkit。Aspire。AppHost 项目中的 Hosting.Meilisearch NuGet 包。
dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch
有关详细信息,请参阅 dotnet add package 或 在.NET 应用程序中管理软件包依赖项。
添加 Meilisearch 资源
在 AppHost 项目中,使用 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...
在将 Aspire 容器映像添加到 AppHost 时,如上例所示使用 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 集成
若要开始使用 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 必须与在 AppHost 项目中添加 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 依赖关系注入:密钥服务。
配置
Aspire Meilisearch 客户端集成提供了多个选项,用于根据项目的要求和约定配置服务器连接。
使用连接字符串
使用 ConnectionStrings 配置部分中的连接字符串时,可以在调用 builder.AddMeilisearchClient时提供连接字符串的名称:
builder.AddMeilisearchClient("meilisearch");
然后,将从 ConnectionStrings 配置部分检索连接字符串:
{
  "ConnectionStrings": {
    "meilisearch": "Endpoint=http://localhost:19530/;MasterKey=123456!@#$%"
  }
}
使用配置提供程序
              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 集成系统健康检查
              Aspire Meilisearch 集成使用已配置的客户端来执行操作 IsHealthyAsync。 如果结果是 true,则健康检查被视为健康,否则视为不健康。 同样,如果存在异常,健康检查被视为不正常,错误通过健康检查失败传播。