本地英文版地址: ../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,包含整个月。