Поиск Azure возвращает недопустимое выражение с фильтром даты

У меня проблема с поиском Azure, который работал раньше, но теперь получает неверное выражение. Я что-то пропустил. Дата Тип фильтра

{"name": "ModifiedDateTime", "type": "Edm. Date TimeOffset", "searchable": false, "filterable": true, "facetable": true, "sortable": true }

введите описание изображения здесь

Апи-версия =2016-09-01-Preview

Запрос-

{"queryType": "full", "searchMode": "all", "filter": "ModifiedDateTime ge 2018-12-12", "search": null, "searchFields": null, "count": true}

Ошибка -

{"error": {"code": "", "message": "Недопустимое выражение: найден литерал '2018-12-12' неподдерживаемого типа данных 'Дата'. Пожалуйста, используйте литерал, соответствующий типу поля в выражении.\r\n Имя параметра: $filter" } }

1 ответ

Решение

Эта ошибка была вызвана регрессией, которая с тех пор была исправлена. Были затронуты только поисковые службы в западно-центральной части США.

У нас отсутствовало тестовое покрытие для этого случая, которое мы фактически никогда не собирались поддерживать. Хотя мы исправили это, чтобы избежать нарушения обратной совместимости, мы можем удалить возможность использования Edm.Date литералы в фильтрах в будущей версии API.

Вы всегда должны включать время и смещения, а также при сравнении с датами. В противном случае, как вы решаете, когда начинается один день, а начинается следующий? Мы предполагаем полуночный UTC для простых дат, но это предположение может быть недействительным для ваших пользователей.

Мы рекомендуем писать фильтры на Edm.DateTimeOffset поля как это вместо этого:

ModifiedDateTime ge 2018-12-12T00:00:00Z

Z для UTC, к которому поиск Azure нормализует все значения DateTimeOffset.

Другие вопросы по тегам