Azure搜索遇到了一个问题,该问题以前一直有效,但现在 收到无效的表达式。我错过了什么吗? 过滤器字段的日期类型-
{“ name”:“ ModifiedDateTime”, “ type”:“ Edm.DateTimeOffset”, “可搜索”:false, “可过滤的”:是的, “ facetable”:是的, “ sortable”:true}
Api-version = 2016-09-01-预览
请求-
{“ queryType”:“ full”,“ searchMode”:“ all”,“ filter”:“ ModifiedDateTime ge 2018-12-12”,“ search”:null,“ searchFields”:null,“ count”: true}
错误-
{ “错误”:{ “ code”:“”, “ message”:“无效的表达式:找到了不支持的数据类型'Date'的文本'2018-12-12'。请使用与表达式中字段类型匹配的文本。\ r \ n参数名称:$ filter” } }
答案 0 :(得分:0)
此错误是由修复后的回归引起的。仅美国中西部的搜索服务受到影响。
我们缺少此案例的测试范围,而实际上我们从来没有打算支持。尽管我们已解决此问题,以避免破坏向后兼容性,但在将来的API版本中,我们可能会删除在过滤器中使用Edm.Date
文字的功能。
与日期比较时,还应始终包括时间和偏移量部分。否则,您如何确定一天何时开始,下一天何时开始?我们假定格林尼治标准时间为格林尼治标准时间,但这种假设可能对您的用户无效。
我们建议改为在Edm.DateTimeOffset
字段上写过滤器,如下所示:
ModifiedDateTime ge 2018-12-12T00:00:00Z
Z代表UTC,Azure搜索将Z标准化所有DateTimeOffset值。