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

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

注意 表中的类型必须一一对应,否则数据会被当做脏数据丢弃,尤其是Geo-point和Nested拥有各自特定的格式。如果格式不匹配也会被当做脏数据丢弃,则会出现数据在表中能查询到,但是在多元索引中查询不到的情况。
多元索引中字段数据类型 数据表中字段数据类型 描述
Long Integer 64位长整型。
Double Double 64位双精度浮点数。
Boolean Boolean 布尔值。
Keyword String 不可分词字符串。
Text String

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

Date Integer、String 日期数据类型,支持自定义各种格式日期数据。更多信息,请参见日期数据类型
Geo-point String 位置点坐标信息,格式为纬度,经度,纬度在前,经度在后,且纬度范围为[-90,+90],经度范围为[-180,+180]。例如35.8,-45.91
Nested String 嵌套类型,例如[{"a": 1}, {"a": 3}]。

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

属性 类型 描述
Index Boolean 是否开启索引。
  • 如果为true,则会对该列构建倒排索引或者空间索引。
  • 如果为false,则不会对该列构建索引。

    如果未构建索引,则不能按照该列进行数据查询。

EnableSortAndAgg Boolean 是否开启排序与统计聚合功能。
  • 如果为true,则可以使用该列进行排序和统计聚合。
  • 如果为false,则不能使用该列进行排序或统计聚合。
Store Boolean 是否在多元索引中附加存储该列的值。

如果为true,则会在多元索引中附加存储该列的值。查询时如果需要读取该列的值,会优先从多元索引中直接读取,无须反查数据表。使用后查询性能更优和更稳定。

IsArray Boolean 是否为数组。

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

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

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

isVirtualField Boolean 是否为虚拟列。
  • 如果为true,则该列为虚拟列。当该列为虚拟列时,必须设置此列映射的原始字段。关于虚拟列的更多信息,请参见虚拟列
  • 如果为false,则该列不为虚拟列。此时该列的数据类型必须和数据表的数据类型相匹配。
数据类型和字段属性组合使用的情况请参见下表。
类型 Index EnableSortAndAgg Store IsArray isVirtualField
Long 支持 支持 支持 支持 支持
Double 支持 支持 支持 支持 支持
Boolean 支持 支持 支持 支持 不支持
Keyword 支持 支持 支持 支持 支持
Text 支持 不支持 支持 支持 支持
Date 支持 支持 支持 支持 支持
Geo-point 支持 支持 支持 支持 支持
Nested 只对子字段设置 只对子字段设置 只对子字段设置 Nested本身就是数组 不支持