我正在将Elasticsearch引入C#API项目.我想利用现有的API模型作为搜索文档,其中许多模型允许添加自定义数据点.这些是使用Json.NET中的JObject类型实现的.例如:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public JObject ExtraProps { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这允许用户发送像这样的JSON请求体,效果很好:
{
"Id": 123,
"Name": "Thing",
"ExtraProps": {
"Color": "red",
"Size": "large"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我在NEST中将其用作文档类型,那些额外的属性会以某种方式丢失其值,序列化为:
{
"Id": 123,
"Name": "Thing",
"ExtraProps": {
"Color": [],
"Size": []
}
}
Run Code Online (Sandbox Code Playgroud)
添加[Nest.Object]属性ExtraProps不会改变行为.据我了解,NEST在内部使用Json.NET,所以我不希望它有Json.NET类型的问题.对此有一个相对简单的解决方案吗?
以下是我正在权衡的一些选项: