使用NEST批量更新ElasticSearch

我正在尝试使用NEST替换ES上的文档。 我看到以下选项可用。

选项1:

var documents = new List<dynamic>();

`var blkOperations = documents.Select(doc => new BulkIndexOperation<T>`(doc)).Cast<IBulkOperation>().ToList();   
var blkRequest = new BulkRequest()
{
    Refresh = true,
    Index = indexName,
    Type = typeName,
    Consistency = Consistency.One,
    Operations = blkOperations
};
var response1 = _client.Raw.BulkAsync<T>(blkRequest);

选项#2:

var descriptor = new BulkDescriptor();
foreach (var eachDoc in document)
{
    var doc = eachDoc;
    descriptor.Index<T>(i => i
        .Index(indexName)
        .Type(typeName)
        .Document(doc));
}
var response = await _client.Raw.BulkAsync<T>(descriptor);

那么任何人都可以告诉我哪一个更好或者使用NEST进行批量更新或删除的任何其他选项?


你是通过批量请求到ElasticsearchClientElasticClient.Raw ,当你需要它传递给ElasticClient.BulkAsync()ElasticClient.Bulk()可以接受批量请求类型。

使用BulkRequestBulkDescriptor是NEST提供的用于编写查询的两种不同方法; 前者使用Object Initializer语法来构建请求对象,而后者则在Fluent API中使用,以使用lambda表达式构建请求。

在你的榜样, BulkDescriptor使用流畅API的背景之外,但两者BulkRequestBulkDescriptor实施IBulkRequest这样可以传递给ElasticClient.Bulk(IBulkRequest)

至于使用哪一种,在这种情况下,无论你喜欢哪一种都不重要。

链接地址: http://www.djcxy.com/p/31615.html

上一篇: Bulk Update on ElasticSearch using NEST

下一篇: How to configure Sphinx auto flask to document flask