本地英文版地址: ../en/query-dsl-range-query.html
返回包含指定范围内的词项的文档。
下面这个搜索返回 age
字段包含 10
到 20
之间的词项的文档。
GET /_search { "query": { "range" : { "age" : { "gte" : 10, "lte" : 20, "boost" : 2.0 } } } }
-
gt
- (可选) 大于
-
gte
- (可选) 大于等于
-
lt
- (可选) 小于
-
lte
- (可选) 小于等于
-
format
-
(可选, string) 用于转换查询中
date
值的日期格式。默认情况下,Elasticsearch 使用
<field>
的映射中指定的 dateformat
。 它会覆盖该映射中设置的格式。有效的语法请参考
format
。如果
format
和date
值不完整,Elasticsearch 会用unix 时间的开始时间(即1970年1月1日)替换任何缺少的年、月或日期部分。例如,如果
format
为dd
,则 Elasticsearch 会将gte
值10
转换为1970-01-10T00:00:00.000Z
, 即: 将"gte": "10"
转换为"gte": "1970-01-10T00:00:00.000Z"
。
-
relation
-
(可选, string) 指示范围查询如何匹配
range
字段的值。有效值有:-
INTERSECTS
(默认) - 匹配范围字段值与查询范围相交的文档。
-
CONTAINS
- 匹配范围字段值完全包含查询范围的文档。
-
WITHIN
- 匹配范围字段值完全在查询范围内的文档。
-
-
time_zone
-
(可选, string) 协调世界时(UTC)时差或 IANA时区,用于将查询字符串中的
date
值转换为 UTC。有效值包括 ISO 8601 UTC 时差,如
+01:00
或-08:00
,以及 IANA 时区识别名称,如America/Los_Angeles
。有关使用
time_zone
参数的查询示例,请参阅范围range
查询中的时区。 -
boost
-
(可选, float) 用于降低或增加查询的相关性评分的浮点数。默认为
1.0
。你可以使用
boost
参数来调整包含两个或更多查询的搜索的相关性评分。boost
值是相对于默认值1.0
的。 其值在0
和1.0
之间时会降低相关性评分,而大于1.0
时会增加相关性评分。
如果 search.allow_expensive_queries
设置为 fasle
,则在 text
或 keyword
类型的字段上的范围查询不会被执行。
当<field>
参数是一个date
类型的字段时,可以将日期计算与以下参数一起使用:
-
gt
-
gte
-
lt
-
lte
例如,下面这个搜索返回timestamp
字段包含今天(now)和昨天(now-1d)之间的日期的文档。
GET /_search { "query": { "range" : { "timestamp" : { "gte" : "now-1d/d", "lt" : "now/d" } } } }
Elasticsearch 对参数中的日期计算的值进行舍入,如下所示:
-
gt
-
向上舍入到舍入日期未涵盖的第一个毫秒。
例如,
2014-11-18||/M
舍入到2014-12-01T00:00:00.000
,不包括整个11月。 -
gte
-
向下舍入到第一个毫秒。
例如,
2014-11-18||/M
向下舍入到2014-11-01T00:00:00.000
,包含了整个月。 -
lt
-
向下舍入到舍入值之前的最后一毫秒。
例如,
2014-11-18||/M
向下舍入到2014-10-31T23:59:59.999
,不包括整个11月。 -
lte
-
舍入到舍入间隔中最近的一毫秒。
例如,
2014-11-18||/M
向上舍入到2014-11-30T23:59:59.999
,包含整个月。