如何通过ModifyJsonSerializerSettings在NEST客户端中设置NullValueHandling.Include JsonSerializerSettings

时间:2014-06-18 15:11:09

标签: c# elasticsearch nest jsonserializer

在我正在做的c#应用程序中

var settings = new ConnectionSettings(node);
settings.ModifyJsonSerializerSettings(new JsonSerializerSettings() 
    { NullValueHandling = NullValueHandling.Include });
var client = new ElasticClient(settings);

但是它没有任何效果,在elasticsearch中没有索引空字段。

我的目标是设置序列化程序,使其包含对象中的所有空字段。有没有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

要在Elasticsearch中获取要存储/索引的空值,您需要修改映射以处理空值。根据{{​​3}}

  

如果字段有(JSON)空值,请使用null_value作为字段值。默认为根本不添加字段。

这意味着如果您要编制索引的文档中的字段存在空值,除非在该字段的映射中设置了null_value,否则elasticsearch不会将该字段添加到文档中。如何设置索引字段以接受空值的示例将类似于上述文档链接中的此示例。请参阅message字段...

 {
     "tweet" : {
         "properties" : {
            "user" : {"type" : "string", "index" : "not_analyzed"},
            "message" : {"type" : "string", "null_value" : "na"},
            "postDate" : {"type" : "date"},
            "priority" : {"type" : "integer"},
            "rank" : {"type" : "float"}
        }
    }
 }