全部產品
Search
文件中心

:資料類型介紹

更新時間:Oct 22, 2024

使用多元索引前,您需要瞭解多元索引支援的資料類型以及多元索引中資料類型與資料表中資料類型的映射關係。

資料類型說明

多元索引提供了 Long、Double、Boolean、Keyword、Text、Date、Geopoint、Vector 等基礎資料型別 (Elementary Data Type),數群組類型和巢狀型別等特殊類型以及虛擬列。

重要

Table Store Java SDK 版本從 5.13.9 版本開始支援多元索引 Date 類型。如需使用多元索引 Date 類型,請確保擷取了正確的 Java SDK 版本。關於 Java SDK 歷史迭代版本的更多資訊,請參見 Java SDK 歷史迭代版本

基礎資料型別 (Elementary Data Type)

多元索引提供了 Long、Double、Boolean、Keyword、Text、Date、Geopoint、Vector 等基礎資料型別 (Elementary Data Type)。具體說明請參見下表。

基礎資料類型

描述

Long

64 位元長整型。

Double

64 位元雙精確度浮點數。

Boolean

布爾值。

Keyword

不可分詞字串。

Text

可分詞字串或文本。關於分詞的更多資訊,請參見分詞

Date

日期資料類型,支援自訂各種格式日期資料。更多資訊,請參見日期時間類型

Geopoint

位置點座標資訊,格式為緯度,經度,緯度在前,經度在後,且緯度範圍為[-90,+90],經度範圍為[-180,+180]。例如35.8,-45.91

Vector

向量類型,格式為 Float32 數組的字串,數組長度與該欄位的維度相等。例如向量字串[1, 5.1, 4.7, 0.08 ]的維度為4。

數組和巢狀型別

多元索引除了提供 Long、Double、Boolean、Keyword、Text、Date、Geopoint、Vector 等基本類型外,還提供了數群組類型和巢狀型別兩種特殊類型。數群組類型適用於儲存一系列相同類型的資料,巢狀型別適用於儲存具有層級結構的資料,類似於 JSON。更多資訊,請參見數組和巢狀型別

數群組類型

重要
  • 數群組類型僅是多元索引中的概念,資料表中還未支援數組。

  • 向量 Vector 類型暫時不支援數組。

數群組類型屬於附加類型,可以附加在 Long、Double、Boolean、Keyword、Text、Date、Geopoint 等基本類型之上。例如 Long 類型+數組後,即為長整型數組,該欄位中可以包括多個長整型數字,查詢資料時其中任何一個匹配都可以返回該行資料。資料類型適用於儲存一系列相同類型的資料。

對於多元索引中數群組類型的欄位,在資料表中必須為 String 類型,且對應的多元索引中的類型必須為相應的類型,例如 Long、Double 等。如果欄位 price 是 Double Array 數群組類型,則在資料表中 price 必須為 String 類型,在對應的多元索引中的類型必須為 Double 類型,且附加isArray=true屬性。

多元索引的基本類型數組格式請參見下表。

數群組類型

說明

Long Array

長整型的數組形式,格式為"[1000, 4, 5555]"

Double Array

浮點數的數組形式,格式為"[3.1415926, 0.99]"

Boolean Array

布爾值的數組形式,格式為"[true, false]"

Keyword Array

字串的數組形式,格式為JSON Array,例如"[\"杭州\", \"西安\"]"

Text Array

文本的數組形式,格式為JSON Array,例如"[\"杭州\", \"西安\"]"

對於Text類型,一般無需使用數組形式。

Date Array

日期的數組形式。如果日期類型為整型,則格式為"[1218197720123, 1712850436000]";如果日期類型為字串,則格式為"[\"2024-04-11 23:47:16.854775807\", \"2024-06-11 23:47:16.854775807\"]"

Geopoint Array

地理位置點的數組形式,格式為"[\"34.2, 43.0\", \"21.4, 45.2\"]"

巢狀型別

巢狀型別(Nested)代表嵌套文件類型。嵌套文檔是指對於一行資料(文檔)可以包含多個子行(子文檔),多個子行儲存在一個巢狀型別欄位中。巢狀型別適用於儲存具有層級結構的資料。

對於巢狀型別欄位,需要指定其子行的結構,即子行中包含哪些欄位以及每個欄位的屬性。巢狀型別也是類似數組的多值結構,但是更接近 JSON 類型。

對於多元索引中巢狀型別的欄位,在資料表中必須為 String 類型,且對應的多元索引中的類型必須為巢狀型別。巢狀型別欄位只能使用巢狀型別查詢功能進行資料查詢。

在寫入資料到資料表時,多元索引巢狀型別欄位對應資料表欄位的寫入格式必須為 JSON 對象的數組格式,例如[{"tagName":"tag1", "score":0.8}, {"tagName":"tag2", "score":0.2}]

重要

即使只有一個子行,也必須按照 JSON 數組的格式構造字串。

根據資料的層級結構不同,巢狀型別包括單層級巢狀型別和多層級巢狀型別。具體說明請參見下表。

巢狀型別

說明

單層級巢狀型別

在一個資料結構中只包含一層其他資料結構,結構相對簡單,能表示一定的層次關係。單層級巢狀型別適用於不需要過多層級但需要一定層級結構的情境。樣本如下:

[
    {
        "tagName": "tag1",
        "score": 0.8
    },
    {
        "tagName": "tag2",
        "score": 0.2
    }
]

多層級巢狀型別

在一個資料結構中包含了多層嵌套的其他資料結構,具有更複雜的層次關係。多層級巢狀型別適用於需要表示豐富層次、高度模組化或高度組織化的資料模型。樣本如下:

[
    {
        "name": "張三",
        "age": 20,
        "phone": "1390000****",
        "address": [
            {
                "province": "浙江省",
                "city": "杭州市",
                "street": "陽光大道幸福小區1201號"
            }
        ]
    }
]

虛擬列

如果要在不改變Table Store的儲存結構及資料的情況下實現新欄位新資料類型的查詢功能,您可以使用多元索引虛擬列實現。更多資訊,請參見虛擬列

虛擬列功能支援使用者在建立多元索引的時候將表中一列映射到多元索引中的虛擬列。新的虛擬列類型可以不同於表中的原始列類型,以便支援使用者在不修改表結構和資料的情況下建立一列,新的列可以用於查詢加速或者採用不同的分詞器。

  • 一個 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