基础数据类型及映射

本文介绍了数据表中和多元索引中字段数据类型的映射关系,以及不同字段数据类型支持的附加属性信息。

多元索引的字段值来源于数据表中同名字段的值,两者的数据类型必须相匹配,多元索引字段数据类型与数据表中字段数据类型的匹配关系请参见下表。

重要

表中的类型必须一一对应,否则数据会被当作脏数据丢弃,尤其是Geo-pointNested拥有各自特定的格式。如果格式不匹配也会被当做脏数据丢弃,则会出现数据在表中能查询到,但是在多元索引中查询不到的情况。

多元索引中字段数据类型

数据表中字段数据类型

描述

Long

Integer

64位长整型。

Double

Double

64位双精度浮点数。

Boolean

Boolean

布尔值。

Keyword

String

不可分词字符串。

FuzzyKeyword

String

支持高性能模糊查询的字符串。

Text

String

可分词字符串或文本。关于分词的更多信息,请参见分词

Date

Integer、String

日期数据类型,支持自定义各种格式日期数据。更多信息,请参见日期数据类型

Geo-point

String

位置点坐标信息,格式为纬度,经度,纬度在前,经度在后,且纬度范围为[-90,+90],经度范围为[-180,+180]。例如35.8,-45.91

Vector

String

向量类型,格式为Float32数组的字符串,数组长度与该字段的维度相等。例如向量字符串[1, 5.1, 4.7, 0.08 ]的维度为4。

Nested

String

嵌套类型,例如[{"a": 1}, {"a": 3}]。

多元索引字段还支持如下附加属性。

属性

类型

描述

IsArray

Boolean

是否为数组。

如果为true,则该列是一个数组。在写入时,也必须按照JSON数组格式写入,例如["a","b","c"]。

Nested类型本身就是一个数组,所以无须设置Array。

Array类型不影响查询,所以Array类型的数据可以用于所有的Query查询。

isVirtualField

Boolean

是否为虚拟列。

  • 如果为true,则该列为虚拟列。当该列为虚拟列时,必须设置此列映射的原始字段。关于虚拟列的更多信息,请参见虚拟列

  • 如果为false,则该列不为虚拟列。此时该列的数据类型必须和数据表的数据类型相匹配。

说明

ArrayNested的区别请参见NestedArray对比

数据类型和字段属性组合使用的情况请参见下表。

类型

IsArray

isVirtualField

Long

支持

支持

Double

支持

支持

Boolean

支持

不支持

Keyword

支持

支持

FuzzyKeyword

支持

支持

Text

支持

支持

Date

支持

支持

Geo-point

支持

支持

Vector

不支持,Vector本身就是数组

支持

Nested

不支持,Nested本身就是数组

不支持