すべてのプロダクト
Search
ドキュメントセンター

Tablestore:データ型

最終更新日:Dec 28, 2024

検索インデックスを使用する前に、検索インデックスでサポートされているデータ型を理解する必要があります。また、検索インデックスでサポートされているデータ型と、検索インデックスが作成されるデータテーブルでサポートされているデータ型の間のマッピングも理解する必要があります。

サポートされているデータ型

検索インデックスは、Long、Double、Boolean、Keyword、Text、Date、Geopoint、および Vector の基本データ型、Array および Nested の特殊データ型、そして仮想カラムをサポートしています。

重要

Tablestore SDK for Java V5.13.9 以降では、検索インデックスの Date データ型がサポートされています。検索インデックスで Date データ型を使用するには、Tablestore SDK for Java V5.13.9 以降を取得していることを確認してください。Tablestore SDK for Java のバージョンの詳細については、Tablestore SDK for Java のバージョン履歴を参照してください。

基本データ型

検索インデックスは、Long、Double、Boolean、Keyword、Text、Date、Geopoint、および Vector の基本データ型をサポートしています。次の表に、基本データ型を示します。

基本データ型

説明

Long

64 ビット長整数。

Double

64 ビット倍精度浮動小数点数。

Boolean

ブール値。

Keyword

トークン化できない文字列。

Text

トークン化できる文字列またはテキスト。詳細については、トークン化を参照してください。

Date

日付データ型。日付型のデータの形式を指定できます。詳細については、日付データ型を参照してください。

Geopoint

latitude,longitude 形式の地理的位置の座標ペア。緯度の有効な値: [-90,+90]。経度の有効な値: [-180,+180]。例: 35.8,-45.91

Vector

ベクトル型。ベクトル型のフィールドの値は、Float32 配列形式の文字列です。配列の長さは、フィールドの次元数と同じです。たとえば、ベクトル文字列 [1, 5.1, 4.7, 0.08] の次元数は 4 です。

Array 型と Nested 型

Long、Double、Boolean、Keyword、Text、Date、Geopoint、Vector などの基本データ型に加えて、検索インデックスは 2 つの特殊データ型、Array と Nested をサポートしています。Array データ型は、同じ型のデータのコレクションを格納するのに適しています。Nested データ型は JSON データ型に似ており、階層構造を持つデータを格納するのに適しています。詳細については、Array 型と Nested 型を参照してください。

Array 型

重要
  • Array データ型は、検索インデックスでのみ使用できます。

  • ベクトルデータ型は配列で使用できません。

Array データ型は複合データ型であり、Long、Double、Boolean、Keyword、Text、Date、Geopoint などのプリミティブデータ型と組み合わせて、複雑なデータ構造を構築できます。たとえば、Long データ型と Array データ型の組み合わせを使用して、長整数の配列を構築します。長整数配列には、複数の長整数が含まれる場合があります。クエリの際に長整数のいずれかが一致すると、対応する行が返されます。Array データ型は、同じ型のデータのコレクションを格納するのに適しています。

検索インデックスのフィールドのデータ型が、Long や Double などのプリミティブデータ型と Array データ型の組み合わせである場合、検索インデックスが作成されるデータテーブルのフィールドは String 型である必要があり、検索インデックスのフィールドは対応するプリミティブデータ型である必要があります。たとえば、price フィールドは Double Array 型です。データテーブルの price フィールドの値は String 型である必要があり、検索インデックスの price フィールドの値は Double 型である必要があり、isArray=true 設定を構成する必要があります。

次の表に、検索インデックスにおける Array データ型とプリミティブデータ型の組み合わせを示します。

組み合わせ

説明

Long Array

長整数配列。形式: "[1000, 4, 5555]"

Double Array

浮動小数点数配列。形式: "[3.1415926, 0.99]"

Boolean Array

ブール値の配列。形式: [true, false]

Keyword Array

文字列の配列。キーワード配列は JSON 配列です。例: "[\"Hangzhou\", \"Xi'an\"]"

Text Array

テキストの配列。テキスト配列は JSON 配列です。例: "[\"Hangzhou\", \"Xi'an\"]"

テキスト配列はあまり使用されません。

Date Array

日付データの配列。Integer 型の日付データの形式: "[1218197720123, 1712850436000]"。String 型の日付データの形式: "[\"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 型

Nested 型のデータはネストされたドキュメントです。ネストされたドキュメントは、データの行(ドキュメント)に複数の子行(子ドキュメント)が含まれている場合に使用されます。複数の子行は、ネストされたフィールドに格納されます。Nested データ型は、階層構造を持つデータを格納するのに適しています。

ネストされたフィールドの子行のスキーマを指定する必要があります。スキーマには、子行のフィールドと各フィールドのプロパティが含まれている必要があります。Nested データ型を使用して、JSON データ型と同様に複数の値を格納できます。

検索インデックスのフィールドが Nested 型の場合、検索インデックスが作成されるデータテーブルのフィールドは String 型である必要があり、検索インデックスのフィールドは Nested 型である必要があります。Nested 型のフィールドをクエリするには、ネストされたクエリを実行する必要があります。

データテーブルのフィールドにデータを書き込む際に、そのフィールドがデータテーブル用に作成された検索インデックスのネストされたフィールドに対応する場合、データテーブルのフィールドが JSON 配列型であることを確認してください。例: [{"tagName":"tag1", "score":0.8,"time": 1730690237000 }, {"tagName":"tag2", "score":0.2,"time": 1730691557000}]

重要

フィールドに子行が 1 つしか含まれていないかどうかに関係なく、JSON 配列型の文字列をネストされたフィールドに書き込む必要があります。

ネストされたフィールドは、単一レベルと複数レベルのネストされたフィールドに分類されます。次の表に、2 つの型を示します。

説明

単一レベルのネストされたフィールド

単一レベルのネストされたフィールドは、1 つのレベルのみを含む単純なデータ構造を持っています。単一レベルのネストされたフィールドは、複数レベルのデータ構造は必要ないが、階層構造が必要なシナリオに適しています。例:

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

複数レベルのネストされたフィールド

複数レベルのネストされたフィールドは、複数レベルを含む複雑なデータ構造を持っています。複数レベルのネストされたフィールドは、さまざまなレベルの編成されたデータを集中モジュールに格納するために複雑なデータ構造が必要なシナリオに適しています。例:

[
    {
        name:"John",
        "age": 20,
        "phone": "1390000****",
        "address": [
            {
                "province": "Zhejiang",
                "city": "Hangzhou",
                "street": "1201 Xingfu Community, Sunshine Avenue"
            }
        ]
    }
]

仮想カラム

検索インデックスの仮想カラム機能を使用すると、Tablestore テーブルのストレージスキーマとデータを変更することなく、新しいフィールドと新しいフィールド型のデータをクエリできます。詳細については、仮想カラムを参照してください。

仮想カラム機能を使用すると、検索インデックスを作成するときに、テーブルのカラムを検索インデックスの仮想カラムにマッピングできます。仮想カラムの型は、テーブルのカラムの型と異なる場合があります。これにより、テーブルスキーマとデータを変更せずにカラムを作成できます。新しいカラムは、クエリを高速化するために使用したり、異なるトークン化方法で構成したりできます。

  • テーブルの同じフィールドにマッピングされている Text フィールドに異なるトークン化方法を構成できます。

    1 つの String カラムを検索インデックスの複数の Text カラムにマッピングできます。異なる Text カラムは、さまざまなビジネス要件を満たすために異なるトークン化方法を使用します。

  • クエリの高速化

    データをクレンジングしたり、テーブルスキーマを再作成する必要はありません。テーブルの必要なカラムを検索インデックスのカラムにマッピングするだけで済みます。カラム型は、テーブルと検索インデックスで異なる場合があります。たとえば、数値型を Keyword 型にマッピングして用語クエリの パフォーマンスを向上させ、String 型を数値型にマッピングして範囲クエリの パフォーマンスを向上させることができます。

データ型のマッピング

検索インデックスのフィールドの値は、検索インデックスが作成されるデータテーブルで同じ名前を持つフィールドの値です。2 つの値のデータ型は一致する必要があります。次の表に、一致ルールを示します。

検索インデックスのフィールドデータ型

データテーブルのフィールドデータ型

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