Azure搜索返回带有日期筛选器的无效表达式

时间:2018-12-12 07:58:16

标签: azure-search azure-search-.net-sdk

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

{“ name”:“ ModifiedDateTime”,   “ type”:“ Edm.DateTimeOffset”,   “可搜索”:false,   “可过滤的”:是的,   “ facetable”:是的,   “ sortable”:true}

enter image description here

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”     } }

1 个答案:

答案 0 :(得分:0)

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

我们缺少此案例的测试范围,而实际上我们从来没有打算支持。尽管我们已解决此问题,以避免破坏向后兼容性,但在将来的API版本中,我们可能会删除在过滤器中使用Edm.Date文字的功能。

与日期比较时,还应始终包括时间和偏移量部分。否则,您如何确定一天何时开始,下一天何时开始?我们假定格林尼治标准时间为格林尼治标准时间,但这种假设可能对您的用户无效。

我们建议改为在Edm.DateTimeOffset字段上写过滤器,如下所示:

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

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