我的问题如下.我有一个由字典组成的数据类型.
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()
);
但是具有关键项1的项仍然存在.有谁知道,我如何告诉更新方法删除此条目?
最佳答案 更新可以通过脚本或更新的文档进行.在您的情况下,您通过文档选项进行更新,但是您在呼叫中指定了脚本类型,因为您正在使用Update< T>而不是更新< T,K>.您可以在
Nest Update by Script API中看到脚本更新的示例.
尝试将代码更改为以下内容,您应该按预期看到此更新.
client.Update<Data, Data>(u => u
.Index("defaultindex")
.Type("data")
.Document(d)
.Id(d.Id)
.RetryOnConflict(5)
.Refresh()
);
您甚至可以发送部分更新,只更新“项目”部分.
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()
);
希望这可以帮助.