Elastic / NEST не будет обрабатывать нулевые значения - PullRequest
0 голосов
/ 03 мая 2018

В настоящее время я ограничен NEST v2.4.6.

У меня есть объекты с атрибутами, которые иногда могут быть нулевыми и должны сохраняться с этими нулевыми атрибутами.

Согласно документации: https://www.elastic.co/guide/en/elasticsearch/client/net-api/2.x/modifying-default-serializer.html#_modifying_settings_using_serializerfactory

Это должно позволить мне сериализовать нулевые значения. К сожалению, после настройки все мои запросы 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;
    }));

Пример запроса NEST, который внезапно начинает ничего не возвращать после включения NullValueHandling на сериализаторе, выглядит следующим образом:

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

Есть идеи?

1 Ответ

0 голосов
/ 03 мая 2018

Почему ваш объект должен сохраняться с нулевыми значениями? Сохраняется или нет, значение должно быть null при десериализации обратно из _source, поскольку поле либо отсутствует, либо фактически установлено на null. В любом случае, это должно работать по умолчанию. Проверка на нулевое значение в запросе может быть выполнена с помощью запроса Exists, см .: https://www.elastic.co/guide/en/elasticsearch/reference/2.4/query-dsl-exists-query.html

...