Установите RequestResponseSerializer в ElasticClient.

Мы видели возрождение этой проблемы в недавнем обновлении Elasticsearch (https://github.com/elastic/elasticsearch-net/issues/1937).

Мы устанавливаем SourceSerializer при создании клиентского соединения, но это не помогает.

При отладке я вижу, что RequestResponseSerializer по умолчанию равно Nest.InternalSerializer. Этот сериализатор JSON имеет поле DateParseHandling, установленное на DateTime, когда мы хотим DateTimeOffset. Я подозреваю, что это может быть причиной моей проблемы.

Есть ли способ установить RequestResponseSerializer, чтобы проверить мою теорию?


ДОПОЛНЕНИЕ: я смог проверить свою теорию выше, напрямую изменив код NEST. Я отредактировал метод InternalSerializer::CreateSettings(), включив в него DateParseHandling = DateParseHandling.DateTimeOffset, и это решило проблему.

Теперь, как установить/изменить это значение для RequestResponseSerializer без прямого изменения кода NEST...


person Gerry    schedule 24.10.2018    source источник
comment
Вы не можете установить RequestResponseSerializer. Этот сериализатор используется NEST для обеспечения правильной сериализации всех типов запросов и ответов. Не могли бы вы обновить свой вопрос, чтобы объяснить, чего вы пытаетесь достичь?   -  person Russ Cam    schedule 26.10.2018
comment
Спасибо, Расс, ссылка в вопросе, относящаяся к проблеме Github, — это именно то, чего я пытаюсь достичь. По сути, это было исправлено, но теперь вернулось (я полагаю, из-за реструктуризации сериализатора)   -  person Gerry    schedule 29.10.2018
comment
В двух словах, дата хранится с информацией о TZ ({"startTimeLocal": "2016-03-21T09:45:20-02:00"}), десериализация из ES преобразует ее в локальную системную TZ. это приводит к потере информации о TZ из исходных данных. Просто хотелось бы иметь возможность установить RequestResponseSerializer для использования DateParseHandling = DateParseHandling.DateTimeOffset, а не текущего значения DateParseHandling.DateTime   -  person Gerry    schedule 29.10.2018


Ответы (1)


Оказывается, моя проблема была такой же, как https://github.com/elastic/elasticsearch-net/issues/3164 и, похоже, исправлено в версии 6.2.0 (https://github.com/elastic/elasticsearch-net/pull/3278).

У меня была версия 6.1.0

Обновил свою версию до v6.3.1 и все выглядит хорошо.

person Gerry    schedule 05.11.2018