Поиск 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.