Sas*_*asi 13 elasticsearch nest elasticsearch-bulk-api
我正在尝试使用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);
Run Code Online (Sandbox Code Playgroud)
选项#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);
Run Code Online (Sandbox Code Playgroud)
那么有人可以告诉我哪个更好或者使用NEST进行批量更新或删除的任何其他选项?
您正在将批量请求传递给ElasticsearchClientie ElasticClient.Raw,当您应该将其传递给ElasticClient.BulkAsync()或者ElasticClient.Bulk()可以接受批量请求类型时.
使用BulkRequest或者BulkDescriptor是由巢编写查询提供了两种不同的方法 ; 前者使用Object Initializer语法来构建请求对象,而后者在Fluent API中用于使用lambda表达式构建请求.
在你的榜样,BulkDescriptor使用流畅API的背景之外,但两者BulkRequest并BulkDescriptor实施IBulkRequest这样可以传递给ElasticClient.Bulk(IBulkRequest).
至于使用哪个,在这种情况下,无论你喜欢哪个都没关系.
| 归档时间: |
|
| 查看次数: |
7250 次 |
| 最近记录: |