c# - 忽略Elasticsearch Nest中的TypeConverter属性

标签 c# elasticsearch json.net nest

我引用了在外部库中定义的几个类,这些类包含TypeConverter属性。由于此属性,Json.Net以及因此的Nest会错误地序列化这些对象。序列化这些对象的正确方法是忽略TypeConverter属性,并使用对象属性。在搜索Stack Overflow中,我发现了一种成功完成this的方法。

不幸的是,当我通过以下方式将此方法应用于Nest时,结果对象不包含必需的_type,_index和_id字段。

var settings = new ConnectionSettings(_Uri);
// Tell Json.Net to ignore custom TypeConverters
settings.SetJsonSerializerSettingsModifier(m => m.ContractResolver = new SerializableContractResolver());
var client = new ElasticClient(settings);

由于结果JSON不包含关键字段,因此所有索引请求都会失败。有没有办法让Nest忽略TypeConverter属性,同时仍然确保对象包含Elasticsearch请求的必要附加字段?

最佳答案

我认为,当您传递忽略TypeConverters的contractresolver时,您正在应用火箭筒杀死苍蝇。

我们还严重依赖于类型转换器来正确地将写入对象。

如果您的外部库中的类不能完全代表它们在Elasticsearch索引中的显示方式,建议您为NEST创建一个特定的POCOAutoMapper是将外部库的实例转换为可索引对象的实例的好方法。

关于c# - 忽略Elasticsearch Nest中的TypeConverter属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28228984/

相关文章:

c# - Json.Net 反序列化构造函数与属性规则

c# - 使用 C# 从 Google 搜索中检索数据

elasticsearch - 将输出发送到logstash

elasticsearch - 如何在Elasticsearch中搜索&符?

c# - IgnoreDataMember 不起作用,但 JsonIgnore 起作用

asp.net-core - .NET Core 如何使用不同的环境?

c# - 通过python登录网站进行抓取的方法

c# - C# 集合是否关心缓存友好性?

c# - 如何编码 C# 结构数组?

c# - 索引格式每天更改为每周