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

Tablestore:データ型

最終更新日:Dec 28, 2024

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

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

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

基本データ型

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

基本データ型

説明

Long

64 ビット長整数。

Double

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

Boolean

ブール値。

Keyword

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

Text

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

Date

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

Geopoint

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

Array 型と Nested 型

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

Array 型

重要

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

Date

Integer および String

Date Array

String

Geopoint

String

Geopoint Array

String

Text

String

Nested

String