gpt4 book ai didi

c# - 包含删除的 NEST 更新文档

转载 作者:行者123 更新时间:2023-11-30 12:27:49 25 4
gpt4 key购买 nike

我的问题如下。我有一个由字典组成的数据类型。

Data d = new Data();
d.Id = "1"
d.Items.Add("item1", "hello");
d.Items.Add("item2", "world");

现在我想删除键为 item1 的项目。

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> .您可以在 Nest Update by Script 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()
);

希望这对您有所帮助。

关于c# - 包含删除的 NEST 更新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24323767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com