包含删除的NEST更新文档
本文关键字:更新 文档 NEST 删除 包含 | 更新日期: 2023-09-27 18:09:26
我的问题如下我有一个由字典组成的数据类型。
Data d = new Data();
d.Id = "1"
d.Items.Add("item1", "hello");
d.Items.Add("item2", "world");
现在我想删除键为item1的Item。
d.Items.Remove("item1");
Index.Update(d);
我的更新方法是这样的:
client.Update<Data>(u => u
.Index("defaultindex")
.Type("data")
.Document(d)
.Id(d.Id)
.RetryOnConflict(5)
.Refresh()
);
但是键为item1的Item仍然存在。有人知道,我如何告诉更新方法删除这个条目吗?
可以通过脚本或通过更新的文档进行更新。在您的情况下,您通过文档选项进行更新,但是您在调用中指定脚本类型,因为您使用的是Update<T>
而不是Update<T,K>
。你可以在脚本API的更新中看到一个脚本更新的例子。
尝试将您的代码更改为以下内容,您应该会看到您期望的更新。
client.Update<Data, Data>(u => u
.Index("defaultindex")
.Type("data")
.Document(d)
.Id(d.Id)
.RetryOnConflict(5)
.Refresh()
);
你甚至可以只发送部分更新,只更新Items
部分。
var updateDocument = new System.Dynamic.ExpandoObject();
var newItems = new Dictionary<string, string>();
newItems.Add("item2","world");
updateDocument.Items = newItems;
client.Update<Data, object>(u => u
.Index("defaultindex")
.Type("data")
.Document(updateDocument)
.Id(d.Id)
.RetryOnConflict(5)
.Refresh()
);