问题描述
Azure认知搜索中是否有一种方法可以将技能输出映射到DateTimeOffset字段? 出现错误:
技能回报:
{ “值”:[ { “ recordId”:“ 0”, “数据”:{ “ date”:“ 2020-09-25T04:00:00.0000000Z” }, “错误”:null, “警告”:null } ] }
索引器映射技能输出
“ outputFieldMappings”: [ { “ sourceFieldName”:“ / document / message_date”, “ targetFieldName”:“ message_date” } ]
其中message_date定义为
{ “ name”:“ message_date”, “ type”:“ Edm.DateTimeOffset”, “ sortable”:是的, “可搜索”:false, “可过滤的”:是的, “ facetable”:false }
获取索引器错误: 文档中带有键“ NA_0138373324”的数据字段“ message_date”具有类型“ Edm.String”的无效值(JSON字符串映射到Edm.String)。预期的类型为“ Edm.DateTimeOffset”
如何强制索引器将其转换为日期?没有这样的映射功能
解决方法
以OData V4格式表示的日期和时间值:
yyyy-MM-ddTHH:mm:ss.fffZ
或yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm
。DateTimeOffset
字段的精度限制为毫秒。 如果您以毫秒级的精度上传DateTimeOffset
值,则返回的值将四舍五入到毫秒级(例如,2015年2015年15月10日10:30:09.7552052Z将返回2015年-04-15T10:30:09.7550000Z)。将带有时区信息的DateTimeOffset
值上载到索引时,Azure Cognitive Search会将这些值标准化为UTC。例如,2017-01-13T14:03:00-08:00将存储为2017-01-13T22:03:00Z。如果需要存储时区信息,则需要在索引中添加一个额外的字段。
您可以将日期时间格式更改为:
yyyy-MM-ddTHH:mm:ssZ
示例:"date": "2020-09-25T04:00:00Z"