gpt4 book ai didi

datetime - 当在Elasticsearch中为文档建立索引时,NEST正在添加TimeZone

转载 作者:行者123 更新时间:2023-12-02 22:50:41 24 4
gpt4 key购买 nike

我的C#类中有一个DateTime字段,如下所示

 public DateTime PassedCreatedDate { get; set; }

从NEST索引到elasticssearch时,它与本地时区一起保存。如何避免这种情况?
 "PassedCreatedDate": "2015-08-14T15:50:04.0479046+05:30" //Actual value saved in ES
"PassedCreatedDate": "2015-08-14T15:50:04.047" //Expected value

flex 搜索中PassedCreatedDate的映射为
  "PassedCreatedDate": {
"type": "date",
"format": "dateOptionalTime"
},

我知道有一个字段作为字符串并在ElasticProperty中提供了格式,但是是否有任何设置可以避免仅在使用datetime字段时添加此时区?

最佳答案

要实现保存DateTimes而没有时区偏移,需要更改两件事。

首先,NEST使用JSON.Net进行JSON序列化,因此我们需要更改ElasticClient上的序列化程序设置,以将DateTimes序列化为所需的格式,并在反序列化时将这些DateTimes解释为Local类型

var settings = new ConnectionSettings(new Uri("http://localhost:9200"));

settings.SetJsonSerializerSettingsModifier(jsonSettings =>
{
jsonSettings.DateFormatString = "yyyy-MM-ddTHH:mm:ss",
jsonSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local
});

var connection = new InMemoryConnection(settings);
var client = new ElasticClient(connection: connection);

其次,我们需要通过映射告诉Elasticsearch,该字段的日期时间格式
"PassedCreatedDate": {
"type": "date",
"format": "yyyy-MM-ddTHH:mm:ss"
},

关于datetime - 当在Elasticsearch中为文档建立索引时,NEST正在添加TimeZone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32181369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com