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

Tablestore:データの型

最終更新日:Dec 10, 2025

多次元インデックスを使用する前に、サポートされているデータの型と、これらの型とデータテーブル内のデータの型とのマッピングを理解する必要があります。

データ型の説明

多次元インデックスは、Long、Double、Boolean、Keyword、Text、Date、IP、Geopoint、Vector、JSON などの基本データ型を提供します。また、配列型、ネスト型、仮想カラムなどの特殊な型も提供します。

重要

多次元インデックスの Date 型は、Tablestore Java ソフトウェア開発キット (SDK) 5.13.9 以降でサポートされています。多次元インデックスの Date 型を使用するには、正しい Java SDK バージョンを使用していることを確認してください。Java SDK のリリース履歴の詳細については、「Java SDK のリリース履歴」をご参照ください。

基本データ型

多次元インデックスは、Long、Double、Boolean、Keyword、Text、Date、IP、Geopoint、Vector、JSON などの基本データ型を提供します。次の表に、これらのデータ型について説明します。

基本データ型

説明

Long

64 ビットの long 型整数です。

Double

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

Boolean

ブール値です。

Keyword

トークン化されていない文字列です。

FuzzyKeyword

パフォーマンス専有型のあいまいクエリをサポートする文字列です。

Text

トークン化された文字列またはテキストです。

Date

カスタムの日付フォーマットをサポートする日付と時刻の型です。

IP

IPv4 および IPv6 フォーマットの IP アドレスをサポートするIP 型です。

Geopoint

位置ポイントの座標情報です。フォーマットは 緯度,経度 です。緯度が先で、経度が後になります。緯度は [-90,+90] の範囲内、経度は [-180,+180] の範囲内である必要があります。例:35.8,-45.91

Vector

ベクター型です。フォーマットは Float32 配列の文字列です。配列の長さはフィールドのディメンションと等しくなります。たとえば、ベクター文字列 [1, 5.1, 4.7, 0.08 ] は 4 ディメンションです。

JSON 型

OBJECT および NESTED インデックスタイプをサポートするJSON 型です。

配列型とネスト型

Long、Double、Boolean、Keyword、Text、Date、Geopoint、Vector などの基本データ型に加えて、多次元インデックスは配列型とネスト型という 2 つの特殊な型も提供します。配列型は、同じ型の一連のデータを格納するのに適しています。ネスト型は、JSON に似た階層構造を持つデータを格納するのに適しています。詳細については、「配列型とネスト型」をご参照ください。

配列型

重要
  • 配列データ型は多次元インデックスでのみ使用できます。データテーブルは配列データ型をサポートしていません。

  • 配列データ型は、非配列データ型と同じ方法で使用できます。配列フィールドを使用してデータをクエリすると、配列内の値の少なくとも 1 つが条件を満たしている場合にデータ行が返されます。

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

配列データ型は、Long、Double、Boolean、Keyword、Text、Date、IP、GeoPoint などの基本データ型と組み合わせることができる修飾子です。たとえば、配列型を Long 型と組み合わせると、結果は複数の long 型整数を格納できる long 型整数配列になります。配列データ型は、同じ型の一連の値を格納するのに適しています。

多次元インデックス内のフィールドのデータ型が、配列データ型と Long や Double などの基本データ型の組み合わせである場合、多次元インデックスが作成されるデータテーブルのフィールドは String 型である必要があり、多次元インデックスのフィールドは対応する基本データ型である必要があります。

次の表に、多次元インデックスにおける配列データ型と基本データ型の組み合わせについて説明します。

配列型

説明

Long Array

long 型整数の配列です。例:"[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

日付の配列です。日付型が整数の場合、フォーマットは "[1218197720123, 1712850436000]" です。日付型が文字列の場合、フォーマットは "[\"2024-04-11 23:47:16.854775807\", \"2024-06-11 23:47:16.854775807\"]" です。

IP Array

IP アドレスの配列です。フォーマットは JSON 配列です。例:"[\"192,168.1.1\", \"255.255.255.255\"]"

Geopoint Array

地理座標点の配列です。例:"[\"34.2, 43.0\", \"21.4, 45.2\"]"

ネスト型

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

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

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

データテーブルにデータを書き込む際、多次元インデックスのネストフィールドに対応するデータテーブルのフィールドは、オブジェクトの 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": "山田 太郎",
        "age": 20,
        "phone": "1390000****",
        "address": [
            {
                "province": "浙江省",
                "city": "杭州市",
                "street": "サンシャインアベニュー 幸福コミュニティ 1201号"
            }
        ]
    }
]

仮想カラム

Tablestore のストレージ構造とデータを変更せずに、新しいデータ型で新しいフィールドをクエリするには、多次元インデックスで仮想カラムを使用します。詳細については、「仮想カラム」をご参照ください。

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

  • テーブル内の同じフィールドにマッピングされている Text フィールドに対して、異なるトークン化メソッドを設定できます。

    1 つの String 列を多次元インデックスの複数の Text 列にマッピングできます。異なる Text 列は、さまざまなビジネス要件を満たすために異なるトークン化メソッドを使用します。

  • クエリの高速化

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

データ型のマッピング

多次元インデックス内のフィールドの値は、データテーブル内の対応するフィールドの値から派生します。これらのフィールドのデータ型は一致する必要があります。次の表に、多次元インデックスとデータテーブルのフィールドデータ型のマッピングについて説明します。

多次元インデックスフィールドのデータ型

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

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

IP

String

IP Array

String

Geopoint

String

Geopoint Array

String

Vector

String

Nested

String

JSON

String