elasticsearch 如何在Nest中进行批量部分更新而不首先获取项目?
我想在Elasticsearch中使用Nest对批量操作中的一个字段进行部分更新 这是我的密码
elasticsearch 如何在Nest中进行批量部分更新而不首先获取项目?,
elasticsearch,nest,
elasticsearch,Nest,我想在Elasticsearch中使用Nest对批量操作中的一个字段进行部分更新 这是我的密码 公共异步任务批量更新(列表请求),其中TOrig:class,其中TUpdate:class { ConnectionSettings设置=新连接设置(新Uri(Url)) .DefaultIndex(IndexName); ElasticClient=新的ElasticClient(设置); BulkResponse response=等待客户端。BulkAsync(b=> b、 UpdateMan
公共异步任务批量更新(列表请求),其中TOrig:class,其中TUpdate:class
{
ConnectionSettings设置=新连接设置(新Uri(Url))
.DefaultIndex(IndexName);
ElasticClient=新的ElasticClient(设置);
BulkResponse response=等待客户端。BulkAsync(b=>
b、 UpdateMany(请求,(业务单元,文档)=>
bu.Doc(Doc));
}
那么我想这样称呼它:
foreach(在recyclingItems中获取RecycleBinResult recyclingItem)
{
bulkRequest.Add(新的MarkFileDeletedRequest{Id=recyclingItem.Id,Deleted=true});
}
等待索引器。批量更新(批量请求);
这是我想做的,但它不允许我做,因为它希望请求
和文档
属于托里
类型,而我希望它们是部分(TUpdate
)。我看到的示例显示,首先从Elasticsearch获取结果,然后在我有request
的地方传递这些结果,但这是非常低效的,不利于首先进行批量请求
更新
我可以使用BulkDescriptor
类来执行此操作:
ConnectionSettings设置=新连接设置(新Uri(Url))
.DefaultIndex(IndexName);
ElasticClient=新的ElasticClient(设置);
BulkDescriptor描述符=新的BulkDescriptor();
foreach(请求中的KeyValuePair项)
{
descriptor.Update(a=>a.Id(item.Key).Doc(item.Value));
}
BulkResponse=await client.BulkAsync(描述符);
但是为什么它不能与fluent API一起工作呢?将批量定义从
b.UpdateMany
更改为b.UpdateMany
,并将完成您所需的操作。