Elastic / NEST不会处理空值

时间:2018-05-03 12:44:04

标签: c# elasticsearch nest

我目前仅限于NEST v2.4.6。

我的对象的属性有时可以为null,并且必须使用这些null属性保留。

根据文件: https://www.elastic.co/guide/en/elasticsearch/client/net-api/2.x/modifying-default-serializer.html#_modifying_settings_using_serializerfactory

这应该允许我序列化Null值。 不幸的是,一旦设置完毕,我的所有ElasticDB查询都不会返回任何内容。

这就像我放

时一样令人困惑
[JsonProperty(NullValueHandling = NullValueHandling.Include)]

属性,它工作正常。

但我显然希望在全球范围内启用此功能。

这就是我的实现:

    var pool = new SingleNodeConnectionPool(new Uri(ConfigurationManager.AppSettings["ElasticInstanceAddress"]));
    var connection = new HttpConnection();
    var settings = new ConnectionSettings(pool, connection,
        new SerializerFactory((s, values) =>
    {
        s.NullValueHandling = NullValueHandling.Include;
    }));

在序列化程序上启用NullValueHandling后突然开始没有返回任何内容的示例NEST查询如下:

var dog = _client.Get<Dog>(query.DogName).Source;

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

为什么你的对象应该用空值保存?是否保留,从[{1}}反序列化时,该值应为null,因为该字段已丢失或实际设置为_source。无论如何,它应该默认工作。可以使用Exists查询检查查询中的null,请参阅:https://www.elastic.co/guide/en/elasticsearch/reference/2.4/query-dsl-exists-query.html