Сопоставление выходных данных навыков с Edm.Поле DateTimeOffset

#azure-cognitive-search

#azure-когнитивный поиск

Вопрос:

Есть ли способ в Azure Cognitive search сопоставить выходные данные навыка с полем DateTimeOffset? Получение ошибки:

Возвращает навык:

{ «значения»: [ { «RecordID»: «0», «данные»: { «дата»: «2020-09-25T04:00:00.0000000Z» }, «ошибки»: null, «предупреждения»: null } ] }

Индексатор отображает выходные данные навыка

«outputFieldMappings»: [ { «Имяисточника»: «/document/ message_date», «имя_целевого поля»: «message_date» } ]

где message_date определяется как

{ «name»: «message_date», «type»: «Edm.DateTimeOffset», «сортируемый»: true, «с возможностью поиска»: false, «фильтруемый»: true, «фасетный»: false },

Ошибка индексатора: поле данных ‘message_date’ в документе с ключом ‘NA_0138373324’ имеет недопустимое значение типа ‘Edm.String’ (строка JSON сопоставляется с Edm.String). Ожидаемый тип был ‘Edm.DateTimeOffset’

Как заставить индексатор преобразовать его в дату? такой функции сопоставления нет

Ответ №1:

Значения даты и времени, представленные в формате OData V4: yyyy-MM-ddTHH:mm:ss.fffZ или yyyy-MM-ddTHH:mm:ss.fff[ amp;#124;-]HH:mm . Точность DateTimeOffset полей ограничена миллисекундами. Если вы загружаете DateTimeOffset значения с точностью до миллисекунды, возвращаемое значение будет округлено до миллисекунд (например, 2015-04-15T10: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"