gpt4 book ai didi

ElasticSearch 批量索引

转载 作者:行者123 更新时间:2023-11-29 02:54:39 28 4
gpt4 key购买 nike

我将 2.1 版和 2.0(alpha)客户端与 Nest C# 客户端一起使用...我试图批量插入一些记录,但是,服务器返回错误。我在与 Linux 服务器对话的 Windows 客户端上使用客户端(不过我认为这无关紧要)。

    public static void AddQuestionsToElasticSearch()
{
var es = new ElasticsearchClient(new ConnectionConfiguration(
new Uri("http://elasticserver:9200"))
);

var foobars = new FooBar().Parse();
var descriptor = new BulkDescriptor();

descriptor.CreateMany<FooBar>(foobars, (bd, q) => bd.Id(q.Id.ToString()).Index("foobars"));

Console.WriteLine($"Inserting foobars into ES...");
var sw = new Stopwatch();
sw.Start();

var result = es.Bulk<FooBar>(descriptor);

sw.Stop();
Console.WriteLine($"Finished inserting foobars {GetTimeTaken(sw.Elapsed)}");
}

更新 - 错误信息

我得到的错误是在从 Bulk() 方法返回的响应中...返回的 BulkResponse 的两个属性是:

OriginalException:“远程服务器返回错误:(400) 错误请求”

ServerError.Error:“验证失败:1:未添加请求”

最佳答案

您犯了一个简单的错误 - 您使用来自 Elasticsearch.Net 的低级别 ElasticsearchClient 发出请求,但向它发送来自 NEST 的强类型批量请求。纠正很简单,你只需要使用 NEST 的 ElasticClient

public static void AddQuestionsToElasticSearch()
{
var es = new ElasticClient(new Uri("http://elasticserver:9200"));

var foobars = new FooBar().Parse();
var descriptor = new BulkDescriptor();

descriptor.CreateMany<FooBar>(foobars, (bd, q) => bd.Id(q.Id.ToString()).Index("foobars"));

Console.WriteLine($"Inserting foobars into ES...");
var sw = new Stopwatch();
sw.Start();

var result = es.Bulk(descriptor);

sw.Stop();
Console.WriteLine($"Finished inserting foobars {GetTimeTaken(sw.Elapsed)}");
}
来自 NEST 的

ElasticClient 是高级客户端,并在幕后使用来自 Elasticsearch.Net 的 ElasticsearchClient

关于ElasticSearch 批量索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34736586/

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