Range 查询(范围查询)
通过某一个包含项的字段匹配文档。 Lucene查询的类型取决于字段类型,对于string (字符串字段),查询是个TermRangeQuery,而对于number / date字段,查询是一个 NumericRangeQuery 。下面这个示例返回age在10到20之间的所有文档。
范围查询接受以下参数:
参数 | 说明 |
gte | 大于或等于 |
gt | 大于 |
lte | 小于或等于 |
lt | 小于 |
boost | 设置查询的boost值,默认为1.0 |
date (日期)字段的范围查询
对类型为date(日期)的字段运行range (范围)查询时,可以使用“Date Math”部分指定范围:
Date math 和 rounding (四舍五入)
当使用date math将日期round(四舍五入)到最近的日,月,小时等时,舍入日期取决于范围的结束是包含还是排除。
向上舍入移动到舍入范围的最后一个毫秒,并向下舍入到舍入范围的第一个毫秒。
例如:
参数 | 说明 |
gt | 大于向上舍入的日期:2014-11-18 || / M变成2014-11-30T23:59:59.999,即不包括整个月。 |
gte | 大于或等于向下舍入的日期:2014-11-18 || / M即成为2014-11-01,即包括整个月。 |
lt | 小于向下舍入的日期:2014-11-18 || / M成为2014-11-01,即不包括整个月。 |
lte | 小于或等于向上舍入的日期:2014-11-18 || / M成为2014-11-30T23:59:59.999,即包括整个月。 |
Range (范围)查询中的日期格式化
格式化的日期将使用指定的默认format(格式)解析date(日期)字段,但可以通过将格式参数传递到range (范围)查询来覆盖默认格式:
Range (范围)查询中的时区
通过在日期值本身指定时区(如果format允许),日期可以从另一个时区转换为UTC,或者可以将其指定为time_zone参数:
①此日期将转换为2014-12-31T23:00:00 UTC。
② now不受time_zone参数的影响(日期必须存储为UTC)。
Last updated