NEST 5.5属性映射和自定义JsonConverter无法正常工作

时间:2017-08-11 11:29:57

标签: c# elasticsearch nest

我们使用Nest 5.5.0和属性映射在Elasticsearch中创建索引。作为我们的一些属性的一部分,我们使用自定义JsonConverters。

我们正在从1.7.3迁移,正确处理此映射。升级后,我们可以在映射中看到它已映射字段而不使用转换器。然后,当我们索引文档时,使用转换器并且索引操作失败。

示例:

Nest and Elasticsearch 1.7.3

// code
public class MyItem
{
    [JsonProperty("start")]
    [JsonConverter(typeof(LocalTimeConverter))]
    public LocalTime Start { get; set; }
}

// index creation
elasticClient.CreateIndex("indexname", d => d.AddMapping<MyItem>(m => m.MapFromAttributes()))

// generated mapping (mapped as how the JsonConverter would output it)
"myitem": {
    "start": {
        "type": "string"
    }
}

Nest and Elasticsearch 5.5.0

// code
public class MyItem
{
    [JsonProperty("start")]
    [JsonConverter(typeof(LocalTimeConverter))]
    public LocalTime Start { get; set; }
}

// index creation
elasticClient.CreateIndexAsync(IndexName<T>(), d => d.Mappings(m => m.Map<MyItem>(mm => mm.AutoMap())));

// generated mapping (essentially a serialized version of the class)
"myitem": {
     "properties": {
        "clockHourOfHalfDay": { "type": "integer"},
        ...
        ...
        "hour": {"type": "integer" }
}
  

注意:

     
      
  • LocalTime是NodaTime库中的一个类
  •   
  • 自定义LocalTimeConverter获取LocalTime并输出字符串
  •   

如何在生成映射时强制Nest 5.5.0考虑JsonConverter属性?

0 个答案:

没有答案