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

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

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

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

Api-version = 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' неподдерживаемого типа данных 'Date'. Используйте литерал, соответствующий типу поля в выражении. \ r \ nИмя параметра: $ filter "}}


person zile    schedule 12.12.2018    source источник


Ответы (1)


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

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

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

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

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

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

person Bruce Johnston    schedule 12.12.2018
comment
Спасибо за ответ, Брюс. но мне интересно, это из-за недавнего обновления поиска в Azure. Всего несколько дней назад этот запрос возвращал совпадающий ответ. - person zile; 12.12.2018
comment
Вы правы, это произошло из-за недавнего изменения, и этого не должно было произойти. Я обновил свой ответ, чтобы отразить это. Извините за беспокойство. - person Bruce Johnston; 13.12.2018
comment
@BruceJohnston У меня аналогичная проблема с .NET SDK для поиска Azure, Filter = Date ge 2017-04-14T06: 35: 05Z это мой запрос. Он отлично работает в обозревателе поиска Azure на портале Azure. Но когда я использую метод SDK SearchClient.Search, я получаю нулевые результаты. На портале Azure этот же запрос дает некоторые документы в качестве результата. Любая идея, что здесь пошло не так? Примечание. Эта проблема касается только полей Edm.DateTimeOffset, другие фильтры работают нормально. - person Hari; 26.01.2021
comment
@Hari Это другая проблема, чем та, что описана в исходном вопросе. Создайте для этого новый вопрос, пометьте его тегом azure-cognitive-search и включите как можно больше деталей. - person Bruce Johnston; 26.01.2021