我正在使用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,
"sku": "somesku",
"disposition": null
}
NEST API 调用示例:
var response = await Client.UpdateAsync<ProductSalesHistory>(id, u => u
.Index(IndexName)
.Doc(document)
.DocAsUpsert(true)
.Refresh(Refresh.False));
结果,Elasticsearch NEST 在将更新的文档发送到 API 之前将其序列化为此类 JSON:
{
"id": 1,
"sku": "somesku"
}
如您所见,没有向 Elasticsearch 提供“处置”值,因此,文档中没有任何更改。
我尝试了什么:
- 我试图将
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
属性添加到ProductSalesHistory.Disposition
属性,但它没有用。 - 添加
() => new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include }
toConnectionSettings
作为参数对我来说不是一个选项,因为我不想对其他查询产生副作用。