Numeric 字段类型 #
下表列出了 Easysearch 支持的所有数字字段类型。
字段数据类型 | 描述 |
---|---|
byte | 有符号的 8 位整数。最小值为 -128,最大值为 127。 |
double | 双精度 64 位 IEEE 754 浮点数。最小值为 2^−1074,最大值为 (2 − 2^−52) · 2^1023。有效位数为 53,有效数字位为 15.95。 |
float | 单精度 32 位 IEEE 754 浮点数。最小值为 2^−149,最大值为 (2 − 2^−23) · 2^127。有效位数为 24,有效数字位为 7.22。 |
half_float | 半精度 16 位 IEEE 754 浮点数。最小值为 2^−24,最大值为 65504。有效位数为 11,有效数字位为 3.31。 |
integer | 有符号的 32 位整数。最小值为 -2^31,最大值为 2^31 - 1。 |
long | 有符号的 64 位整数。最小值为 -2^63,最大值为 2^63 - 1。 |
unsigned_long | 无符号的 64 位整数。最小值为 0,最大值为 2^64 - 1。 |
short | 有符号的 16 位整数。最小值为 -2^15,最大值为 2^15 - 1。 |
scaled_float | 一个浮点值,它会被乘以双精度缩放因子并存储为长整型值。 |
Integer、long、float 和 double 字段类型都有对应的 范围字段类型。
如果你的数字字段用来做标识符(如 ID),你可以将此字段映射为 keyword 以优化 term 查询的速度。如果你需要对此字段使用范围查询,你可以将此字段同时映射为数字字段类型和关键字字段类型。
示例 #
创建一个映射,其中 integer_value 是一个整数字段:
PUT testindex
{
"mappings": {
"properties": {
"integer_value": {
"type": "integer"
}
}
}
}
写入一个`integer_value`的文档
PUT testindex/_doc/1
{
"integer_value": 123
}
Scaled float 字段类型 #
scaled float 字段类型是一个浮点值,它会被乘以缩放因子并存储为长整型值。它接受所有数字字段类型的可选参数,还需要一个额外的 scaling_factor 参数。在创建 scaled float 需要添加缩放因子 scale factor。
scaled float 对于节省磁盘空间很有用。较大的 scaling_factor 值会带来更好的精度,但会占用更多空间。
Scaled float 示例 #
创建一个映射,其中 scaled
是一个 scaled_float 字段:
PUT testindex
{
"mappings": {
"properties": {
"scaled": {
"type": "scaled_float",
"scaling_factor": 10
}
}
}
}
写入一个包含 `scaled_float` 字段的文档
PUT testindex/_doc/1
{
"scaled": 2.3
}
scaled
值将被存储为 23。
参数 #
下表列出了数字字段类型接受的参数。所有参数都是可选的。
参数 | 描述 |
---|---|
boost | 浮点值,指定此字段的权重。值大于 1.0 会增加此字段的相关性。值在 0.0 和 1.0 之间会降低此字段的相关性。默认值为 1.0。 |
coerce | 布尔值,指定是否允许强制类型转换。如果为 true,则字符串会被强制转换为数字,并且小数会被截断为整数。默认为 true。 |
doc_values | 布尔值,指定是否应该将字段添加到列存储中。默认为 true。 |
ignore_malformed | 布尔值,指定是否应该忽略格式错误的数字。默认为 false。 |
index | 布尔值,指定字段是否应该被索引以用于搜索。默认为 true。 |
meta | 接受此字段的元数据。 |
null_value | 用于替代 null 的值。必须与字段类型相同。如果未指定此参数,当字段值为 null 时,该字段将被视为缺失。默认为 null。 |
store | 布尔值,指定字段值是否应该被存储并且可以与 _source 字段分开检索。默认为 false。 |
scaled float 有一个额外的必需参数:scaling_factor
。
参数 | 描述 |
---|---|
scaling_factor | 一个双精度值,它会被乘以字段值并四舍五入为最接近的长整型。必需参数。 |