如何解决如何使用 Elasticsearch NEST APIs UpdateAsync 方法将值更新为 null?
我正在使用 Elasticsearch nesT API
(7.8.1) 并且在使用 client.UpdateAsync<T>
方法将值更新为 null 时遇到问题。
有什么办法可以解决这个问题吗?
示例模型:
public class ProductSalesHistory
{
public Id { get; set; }
public Sku { get; set; }
public disposition { get; set; } //This should be null after update
}
原始文档示例:
{
"id": 1,"sku": "somesku","disposition": "C"
}
更新文档示例:
{
"id": 1,"disposition": null
}
var response = await Client.UpdateAsync<ProductSalesHistory>(id,u => u
.Index(IndexName)
.Doc(document)
.DocAsUpsert(true)
.Refresh(Refresh.False));
结果 Elasticsearch nesT 将文档序列化为这样的 JSON:
{
"id": 1,"sku": "somesku"
}
如您所见,没有向 Elasticsearch 提供“处置”值,因此文档中没有任何更改。
我尝试了什么:
- 我尝试将
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
属性添加到ProductSalesHistory.disposition
属性,但没有成功。 - 将
() => new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include }
添加到ConnectionSettings
作为参数不是我的选择,因为我不想对其他查询产生副作用。
解决方法
由于缺乏其他想法,我是这样解决这个问题的:
var response = await Client.IndexAsync(document,i => i
.Index(IndexName);
IndexAsync 允许将值更新为 null,还支持更新现有文档和创建新文档。由于我们进行了很多此类操作,因此我可以说此类更新的性能几乎相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。