当前位置:   LINUX > 正文

ElasticSearch批量索引

elasticsearch,nest,elasticsearch-net,服务器,linux,windows,https,html,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我将Nest 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(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)}");
    }

更新-错误信息

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

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

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



1> Russ Cam..:

您犯了一个简单的错误-您使用的ElasticsearchClient是Elasticsearch.Net 的低级请求,但从NEST发送了一个强类型的批量请求。要纠正很简单,您只需使用ElasticClientNEST

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

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

    descriptor.CreateMany(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)}");
}

ElasticClient来自NEST的是高级客户端,ElasticsearchClient在后台使用Elasticsearch.Net。


如果索引中已经存在具有相同类型和“ Id”的文档,而“ IndexMany <T>”将插入文档或覆盖现有文档,则对于任何单独的create调用,“ CreateMany <T>()”都会失败。和“ Id”相同的类型(除非您指定了类型,否则将从T推断出来)。本质上,在要使用乐观并发控制的情况下,`CreateMany <T>`很有用。参见https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/docs-bulk.html
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/LINUX/detail/18480
推荐阅读
相关标签
  

闽ICP备14008679号