范围指定检索

当字段中存储了数值、日期时间等可以指定范围的数据时,可以对该字段进行范围指定检索。

使用方法

要进行范围指定检索,请在搜索表单中输入“字段名:[值 TO 值]”。范围的分隔符使用半角大写的 TO

例如,要搜索 content_length 字段中处于 1K 字节到 10K 字节范围内的文档时,请在搜索表单中输入如下内容:

content_length:[1000 TO 10000]

方括号 [ ] 包含范围的端点(即“以上”“以下”),花括号 { } 不包含范围的端点(即“大于”“小于”)。两者也可以组合使用。例如 content_length:{1000 TO 10000] 表示大于 1000 且小于等于 10000 的文档。

将一侧指定为 * 时,表示仅指定上限或下限的开放范围。content_length:[1000 TO *] 表示 1000 以上,content_length:[* TO 10000] 表示 10000 以下。

范围指定检索仅对已注册为检索对象的字段有效。默认情况下,可以对 content_length、last_modified、timestamp、click_count、favorite_count 等字段进行范围指定检索。

时间范围指定检索

要进行时间(日期时间)范围指定检索,请在搜索表单中输入“last_modified:[日期时间1 TO 日期时间2]”(日期时间1 < 日期时间2)。另外,即使日期时间1晚于日期时间2,也不会出现错误,只是检索结果为 0 件。

日期时间以 ISO 8601 格式指定。格式为 YYYY-MM-DDThh:mm:ss.SSSZ,时间部分可以省略。

指定内容 示例
仅年月日 2012-12-02
年月日及时分秒 2012-12-02T10:45:23Z
年月日及时分秒(精确到毫秒) 2012-12-02T10:45:23.235Z

指定日期时间时,可以使用以当前日期时间为基准的日期时间运算。可使用的符号如下所示。

符号 含义
now 当前日期时间
y / M / w / d / h / m / s 年 / 月 / 周 / 日 / 时 / 分 / 秒
+ / - 加法 / 减法
/ 舍入(以 / 后面的单位进行舍入)

以 now 或日期时间为基准时,可以添加 +、-(加法、减法)或 /(舍入)等符号。但是,如果基准不是 now 而是特定的日期时间,则需要在日期时间和符号之间加入 ||(例如:2016-01-01||+1M/d)。

/ 是以 / 后面的单位进行舍入的符号。now-1d/d 表示无论今天几点执行,都是指从本日 00:00 减去 1 天后的前一天 00:00。

另外,这些日期时间运算由检索引擎(OpenSearch)一侧进行求值,仅对日期时间类型的字段有效。

例如,要搜索 last_modified 字段中在从当前日期时间(假设为 2016 年 2 月 21 日 20 时)起 30 天前到现在之间更新的文档时,请在搜索表单中输入如下内容:

last_modified:[now-30d TO now]

上述内容在当前日期时间为 2016 年 2 月 21 日 20 时(UTC)的情况下,大致相当于 [2016-01-22T20:00:00Z TO 2016-02-21T20:00:00Z] 的范围。 </content> </invoke>