使用多元索引前,您需要了解多元索引支持的数据类型以及多元索引中数据类型与数据表中数据类型的映射关系。
数据类型说明
多元索引提供了 Long、Double、Boolean、Keyword、Text、Date、Geopoint、Vector 等基本数据类型,数组类型和嵌套类型等特殊类型以及虚拟列。
表格存储 Java SDK 版本从 5.13.9 版本开始支持多元索引 Date 类型。如需使用多元索引 Date 类型,请确保获取了正确的 Java SDK 版本。关于 Java SDK 历史迭代版本的更多信息,请参见 Java SDK 历史迭代版本。
基本数据类型
多元索引提供了 Long、Double、Boolean、Keyword、Text、Date、Geopoint、Vector 等基本数据类型。具体说明请参见下表。
基础数据类型 | 描述 |
Long | 64 位长整型。 |
Double | 64 位双精度浮点数。 |
Boolean | 布尔值。 |
Keyword | 不可分词字符串。 |
Text | 可分词字符串或文本。关于分词的更多信息,请参见分词。 |
Date | 日期数据类型,支持自定义各种格式日期数据。更多信息,请参见日期时间类型。 |
Geopoint | 位置点坐标信息,格式为 |
Vector | 向量类型,格式为 Float32 数组的字符串,数组长度与该字段的维度相等。例如向量字符串 |
数组和嵌套类型
多元索引除了提供 Long、Double、Boolean、Keyword、Text、Date、Geopoint、Vector 等基本类型外,还提供了数组类型和嵌套类型两种特殊类型。数组类型适用于存储一系列相同类型的数据,嵌套类型适用于存储具有层级结构的数据,类似于 JSON。更多信息,请参见数组和嵌套类型。
数组类型
嵌套类型
虚拟列
如果要在不改变表格存储的存储结构及数据的情况下实现新字段新数据类型的查询功能,您可以使用多元索引虚拟列实现。更多信息,请参见虚拟列。
虚拟列功能支持用户在创建多元索引的时候将表中一列映射到多元索引中的虚拟列。新的虚拟列类型可以不同于表中的原始列类型,以便支持用户在不修改表结构和数据的情况下新建一列,新的列可以用于查询加速或者采用不同的分词器。
一个 Text 字段支持不同的分词器
单个字符串列可以映射到多元索引多个 Text 列,不同 Text 列采用不同的分词,以便满足不同的业务需求。
查询加速
不对表中数据做清洗和重建,只需要将相应列映射为其他类型,即可在部分场景下提升查询性能。例如数字类型转换为 Keyword 类型可以提高精确查询(TermQuery)的性能,String 类型转换为数字类型可以提高范围查询(RangeQuery)的性能。
数据类型映射
多元索引的字段值来源于数据表中同名字段的值,两者的数据类型必须相匹配,多元索引字段数据类型与数据表中字段数据类型的匹配关系请参见下表。
多元索引中字段数据类型 | 数据表中字段数据类型 |
Long | Integer |
Long Array | String |
Double | Double |
Double Array | String |
Boolean | Boolean |
Boolean Array | String |
Keyword | String |
Keyword Array | String |
Text | String |
Date | Integer、String |
Date Array | String |
Geopoint | String |
Geopoint Array | String |
Vector | String |
Nested | String |