本文介绍了数据表中和多元索引中字段数据类型的映射关系,以及不同字段数据类型支持的附加属性信息。
多元索引的字段值来源于数据表中同名字段的值,两者的数据类型必须相匹配,多元索引字段数据类型与数据表中字段数据类型的匹配关系请参见下表。
表中的类型必须一一对应,否则数据会被当作脏数据丢弃,尤其是Geo-point和Nested拥有各自特定的格式。如果格式不匹配也会被当做脏数据丢弃,则会出现数据在表中能查询到,但是在多元索引中查询不到的情况。
多元索引中字段数据类型 | 数据表中字段数据类型 | 描述 |
Long | Integer | 64位长整型。 |
Double | Double | 64位双精度浮点数。 |
Boolean | Boolean | 布尔值。 |
Keyword | String | 不可分词字符串。 |
FuzzyKeyword | String | 支持高性能模糊查询的字符串。 |
Text | String | 可分词字符串或文本。关于分词的更多信息,请参见分词。 |
Date | Integer、String | 日期数据类型,支持自定义各种格式日期数据。更多信息,请参见日期数据类型。 |
Geo-point | String | 位置点坐标信息,格式为 |
Vector | String | 向量类型,格式为Float32数组的字符串,数组长度与该字段的维度相等。例如向量字符串 |
String | 嵌套类型,例如[{"a": 1}, {"a": 3}]。 |
多元索引字段还支持如下附加属性。
属性 | 类型 | 描述 |
IsArray | Boolean | 是否为数组。 如果为true,则该列是一个数组。在写入时,也必须按照JSON数组格式写入,例如["a","b","c"]。 Nested类型本身就是一个数组,所以无须设置Array。 Array类型不影响查询,所以Array类型的数据可以用于所有的Query查询。 |
isVirtualField | Boolean | 是否为虚拟列。
|
Array和Nested的区别请参见Nested和Array对比。
数据类型和字段属性组合使用的情况请参见下表。
类型 | IsArray | isVirtualField |
Long | 支持 | 支持 |
Double | 支持 | 支持 |
Boolean | 支持 | 不支持 |
Keyword | 支持 | 支持 |
FuzzyKeyword | 支持 | 支持 |
Text | 支持 | 支持 |
Date | 支持 | 支持 |
Geo-point | 支持 | 支持 |
Vector | 不支持,Vector本身就是数组 | 支持 |
不支持,Nested本身就是数组 | 不支持 |