范围字段类型
于 1.0 版本引入
下表列出了 UDB-SX 支持的所有范围字段类型。
| 字段数据类型 | 描述 |
|---|---|
integer_range |
整数值的范围。 |
long_range |
长整型值的范围。 |
double_range |
双精度浮点数值的范围。 |
float_range |
单精度浮点数值的范围。 |
ip_range |
IPv4 或 IPv6 格式的 IP 地址范围。起始和结束 IP 地址可以是不同的格式。 |
date_range |
日期值的范围。起始和结束日期可以是不同的格式。在内部,所有日期都存储为表示自纪元以来的毫秒数的无符号 64 位整数。 |
示例
创建包含双精度范围和日期范围的映射:
PUT testindex
{
"mappings" : {
"properties" : {
"gpa" : {
"type" : "double_range"
},
"graduation_date" : {
"type" : "date_range",
"format" : "strict_year_month||strict_year_month_day"
}
}
}
}
索引一个包含双精度范围和日期范围的文档:
PUT testindex/_doc/1
{
"gpa" : {
"gte" : 1.0,
"lte" : 4.0
},
"graduation_date" : {
"gte" : "2019-05-01",
"lte" : "2019-05-15"
}
}
IP 地址范围
您可以用两种格式指定 IP 地址范围:范围形式和 CIDR 表示法。
创建包含 IP 地址范围的映射:
PUT testindex
{
"mappings" : {
"properties" : {
"ip_address_range" : {
"type" : "ip_range"
},
"ip_address_cidr" : {
"type" : "ip_range"
}
}
}
}
索引一个包含两种格式 IP 地址范围的文档:
PUT testindex/_doc/2
{
"ip_address_range" : {
"gte" : "10.24.34.0",
"lte" : "10.24.35.255"
},
"ip_address_cidr" : "10.24.34.0/24"
}
查询范围字段
词条查询
词条查询接收一个值,并匹配所有该值在其范围内的范围字段。
以下查询将返回文档 1,因为 3.5 在范围 [1.0, 4.0] 内:
GET testindex/_search
{
"query" : {
"term" : {
"gpa" : {
"value" : 3.5
}
}
}
}
范围查询
对范围字段的范围查询返回该范围内的文档。
查询 2019 年的所有毕业日期,以 “MM/dd/yyyy” 格式提供日期范围:
GET testindex1/_search
{
"query": {
"range": {
"graduation_date": {
"gte": "01/01/2019",
"lte": "12/31/2019",
"format": "MM/dd/yyyy",
"relation" : "within"
}
}
}
}
上述查询对于 within 和 intersects 关系将返回文档 1,但对于 contains 关系则不会返回。有关关系类型的更多信息,请参阅范围查询参数。
参数
下表列出了范围字段类型接受的参数。所有参数均为可选。
| 参数 | 描述 |
|---|---|
boost |
一个浮点数值,用于指定此字段对相关性评分的权重。高于 1.0 的值会增加字段的相关性。介于 0.0 和 1.0 之间的值会降低字段的相关性。默认值为 1.0。 |
coerce |
一个布尔值,用于指示是否为整数值截断小数,以及将字符串转换为数值。默认值为 true。 |
index |
一个布尔值,指定字段是否应可被搜索。默认值为 true。 |
store |
一个布尔值,指定是否应存储字段值并可以从 _source 字段中单独检索。默认值为 false。 |