#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"