Cloudsearch 范围因负整数而失败

Cloudsearch range failing for negative integers

我在 Amazon 的云搜索中有记录,这些记录的时间戳为 int,表示自纪元以来的毫秒数。我称该字段为 time。对于 1970 年之前的日期,这可能是负数。当我使用 time:[0,} 执行结构化查询时,它返回负数和正数时间戳,这是错误的。文档说 int 是 64 位签名的,所以我不明白为什么这无效。我的查询语法适用于其他只有正值的字段。范围搜索实际上仅限于正数吗?

(旁白:我知道我可以使用日期字符串格式,但我想使用整数来与我系统的其他部分保持一致。我还希望能够表示 BCE 日期,但我不确定当 YYYY 为负数时,YYYY:MM:DD 格式是否安全。)

事实证明,如您所料,Cloudsearch 查询可以很好地处理负数。我的问题是我之前将此字段定义为 text 字段(并且文本比较不会按数字顺序排列字符串,如“123”、“-555”、“-1”等)我d 将字段更改为 int,但我忘记重新索引,所以 Cloudsearch 仍然秘密地将其视为 text

要在更改字段类型后重新编制索引,您可以使用:

aws cloudsearch index-documents --domain-name mycloudsearch

或者您可以从网络界面完成。