gpt4 book ai didi

elasticsearch - 使用多个索引嵌套 ElasticClient 以索引文档

转载 作者:行者123 更新时间:2023-12-02 23:08:09 25 4
gpt4 key购买 nike

起初我有 1 个索引,我的弹性客户端在我的 startup.cs 中设置如下

public static IServiceCollection AddElasticClient(this IServiceCollection services)
{
var elasticSettings = services.BuildServiceProvider().GetService<IOptions<ElasticSettings>>().Value;

var settings = new ConnectionSettings(new Uri(elasticSettings.Uri));
settings
.ThrowExceptions(elasticSettings.ThrowExceptions)
.PrettyJson(elasticSettings.PrettyJson)
.DefaultIndex(elasticSettings.Index)
.BasicAuthentication(elasticSettings.Username, elasticSettings.Password)
.DefaultMappingFor<CorrelationContext>(ms => ms.Ignore(p => p.DgpHeader));

var client = new ElasticClient(settings);

services.AddSingleton<IElasticClient>(client);

return services;
}
我的作家看起来像
public class ElasticWriter : IElasticWriter
{
private readonly IElasticClient _elasticClient;

public ElasticWriter(IElasticClient elasticClient)
{
_elasticClient = elasticClient ?? throw new ArgumentNullException(nameof(elasticClient));
}

public void Write(AuditElasticDoc doc)
{
var indexResponse = _elasticClient.IndexDocument(doc);

if (!indexResponse.IsValid)
{
throw indexResponse.OriginalException ?? new Exception("Invalid Elastic response when writing document.");
}
}

}
现在有一个新要求,他们可以提供要写入的索引的名称。
不同索引的所有身份验证数据都是通过配置设置提供的,所以我在启动时就拥有了一切。
文档类型始终相同。
我找到了在查询时指定索引但在索引时没有指定索引的示例。
我可以在我的 ElasticClient 中提供多个索引并在执行 IndexDocument 时指定索引吗?
还是每个索引都需要一个单独的客户端?
如果是后者,有没有办法我仍然可以使用 DI 将客户端注入(inject)我的作家中,还是我必须在现场创建一个?
谢谢。
我正在使用 Nest 7.6.1

最佳答案

而不是使用 IndexDocument , 你可以使用 IndexAsync允许您控制其他请求参数的方法

var indexResponse = await _elasticClient.IndexAsync(doc, descriptor => descriptor.Index("other"));
IndexDocument是一种包装方法,向客户端隐藏索引文档的复杂性。 Have a look .
请求授权配置
var indexResponse = await _elasticClient.IndexAsync(doc, 
descriptor => descriptor
.Index("other")
.RequestConfiguration(rq => rq.BasicAuthentication("user", "pass")));

关于elasticsearch - 使用多个索引嵌套 ElasticClient 以索引文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63226562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com