在Amazon CloudSearch中搜索时间范围

时间:2017-07-26 14:37:27

标签: javascript amazon-web-services search amazon-cloudsearch

(如果你想要tl:dr,则向下滚动到粗体部分)

我有一个简单的业务要求 - 在Amazon CloudSearch中搜索时间范围。所以,例如,我有一个带有`eventTime:5:00'的云搜索条目。下午。问题是我只需要时间。根据{{​​3}}:

  

日期 - 包含时间戳。日期和时间以UTC指定   (根据IETF RFC3339协调世界时):   YYYY-MM-DDTHH:MM:ss.SSSZ。例如,UTC,1970年8月23日下午5点   是:1970-08-23T17:00:00Z。请注意,您还可以指定小数   指定UTC时间的秒数。例如,   1967-01-31T23:20:50.650Z

此外,搜索日期范围有AWS docs on the date field

  

要在日期字段中搜索一系列日期(或时间),请使用   您用于数字值的括号范围语法相同   必须将日期字符串括在单引号中。例如,   以下请求使用a搜索所有电影的电影数据   发布日期为2013年1月1日或之后:

  

您可以使用结构化查询在字段中搜索范围   值。要指定值范围,请使用逗号(,)分隔   上限和下限,并使用括号或大括号括起范围。   方括号[或]表示边界包含在   范围,大括号,{或},排除了界限。

     

例如,搜索从中发布的电影的样本数据集   2008年至2010年(含),指定范围为[2008,2010]。

     

要指定开放范围,请省略边界。例如,   年:[2002,}匹配从2002年开始发行的所有电影,和   年:{,1970]匹配1970年发行的所有电影。当你省略一个   绑定,你必须使用大括号。

     

在复合查询中,您使用范围运算符语法来搜索a   价值范围;例如:(范围字段=年[1967,})。

这一切都很好,但我希望能够只按时间搜索,例如所有约会在任何一天的上午10点到下午6点之间。如何忽略日期组件

1 个答案:

答案 0 :(得分:1)

这不是直接支持的,但一个简单的解决方法是添加一个仅包含数据时间部分的附加日期字段。

也就是说,yyyy-mm-dd部分始终是常量,例如1970-01-01,但您将为每个文档设置HH:mm:ss.SSS。听起来你正在使用javascript,所以extract time from datetime using javascript可能会帮助你