Поиск Azure возвращает недопустимое выражение с фильтром даты - PullRequest
0 голосов
/ 12 декабря 2018

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

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

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

Api-версия = 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 Ответ

0 голосов
/ 12 декабря 2018

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

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

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

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

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

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

...