如何通过 NEST c# 将列表索引到 elasticsearch

How to index List into elasticsearch via NEST c#

我需要通过 NEST 库将 List<Person> 中的很多条目放入 elasticsearch。 我可以使用下面的循环和代码一一放置:

var person = new Person
{
    Id = "1",
    Firstname = "Martijn",
    Lastname = "Laarman"
};

var index = client.Index(person);

但似乎它运行起来真的很慢。有没有办法通过 NEST 更快地做到这一点?

看看 BulkDescriptor 对象。

然后你可以做如下操作:

private readonly ElasticClient _client; //needs to be initialized in your code
public void Index(IEnumerable<Person> documents)
    {
        var bulkIndexer = new BulkDescriptor();

        foreach (var document in documents)
        {
            bulkIndexer.Index<Person>(i => i
                .Document(document)
                .Id(document.SearchDocumentId)
                .Index(_indexName));
        }

        _client.Bulk(bulkIndexer);
    }

函数 Index 采用您的类型的 IEnumerable。因此,当您循环遍历要索引的项目时,不要将每个对象单独添加到索引中,而是使用此函数将集合传递给,它会为您批量索引对象。