0

我遇到了 Azure 搜索的问题,该搜索以前有效,但现在收到无效的表达式。我是不是错过了什么。过滤器字段的日期类型-

{ “名称”:“ModifiedDateTime”,“类型”:“Edm.DateTimeOffset”,“可搜索”:假,“可过滤”:真,“面表”:真,“可排序”:真 }

在此处输入图像描述

Api-version=2016-09-01-预览

要求-

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

错误 -

{ "error": { "code": "", "message": "Invalid expression: Literal '2018-12-12' of unsupported data type 'Date'. 请使用与字段类型匹配的文字在表达式中。\r\n参数名称:$filter" } }

4

1 回答 1

3

此错误是由已修复的回归引起的。只有美国中西部的搜索服务受到影响。

我们错过了这个案例的测试覆盖率,我们实际上从未打算支持。尽管我们已修复此问题以避免破坏向后兼容性,但我们可能会Edm.Date在未来的 API 版本中删除在过滤器中使用文字的能力。

在与日期进行比较时,您应该始终包括时间和偏移量部分。否则,你如何决定一天何时开始,下一天何时开始?我们假设普通日期为午夜 UTC,但这种假设可能对您的用户无效。

Edm.DateTimeOffset我们建议在这样的字段上编写过滤器:

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

Z 代表 UTC,Azure 搜索将所有 DateTimeOffset 值标准化为 UTC。

于 2018-12-12T08:22:19.100 回答