業界アルゴリズムエディションでは、OBJECT と NESTED の 2 種類の複合データ型をサポートしています。これらのデータ型を使用すると、複数のフィールドをネスト構造にまとめることができます。複合データ型を正しく使用することで、クエリの精度が向上し、不一致を防ぎ、複雑なデータ管理をより効率的に行うことができます。
注意事項
OBJECT 型と NESTED 型は、同じ構造の JSON データを受け入れ、基本的な構成も似ています。しかし、クエリの動作が根本的に異なります。NESTED 型はオブジェクトの境界を維持しますが、OBJECT 型はデータをフラット化します。
タイプ | OBJECT | NESTED |
内部ストレージ方式 | フラット化して格納するため、オブジェクトの境界が失われます。 | 親ドキュメントと子ドキュメントを個別に格納し、オブジェクトの完全性を維持します。 |
クエリセマンティクス | オブジェクト間のマッチングが発生する可能性がありますが、パフォーマンスは向上します。 これにより、異なるユーザーオブジェクト (Alice (age 30) と Bob (age 25)) がマッチする可能性があります。 | マッチングは単一のオブジェクトに厳密に制限されます。 name="Alice" かつ age=30 の単一ユーザーオブジェクトにのみマッチします。 |
制限事項
OBJECT 型と NESTED 型の内部フィールドはレベルごとにフラット化され、レベルはアンダースコアで結合されます。これらのフィールドは、インデックススキーマおよびプロパティフィールドとして構成できます。
業界アルゴリズムエディションでは、OBJECT フィールドと NESTED フィールドに次の制限があります:
フィールドの総数は 10 を超えることはできません。
最大ネスト深度は 5 レベルです。
フィールド自体をプロパティにすることはできません。
同じレベルの他のフィールド名は、プレフィックス
{OBJECT_field_name}_または{NESTED_field_name}_で始めることはできません。たとえば、OBJECT フィールド名がabcの場合、同じレベルの別のフィールド名をabc_dにすることはできません。専有型アプリケーションのみがサポートされます。
OBJECT 型と NESTED 型の内部フィールドには、次の制限があります:
ベクターアナライザはサポートされていません。
ルートフィールド、転置インデックスのソートフィールド、またはベクターインデックスの名前空間として構成することはできません。
複合インデックスはサポートされていません。
作成されるインデックス名は、フィールド名と同じである必要があります。
ソート式はサポートされていません。
表示フィールドとして構成することはできません。
モデルトレーニングフィールドとして構成することはできません。
例
アプリケーションの作成
構文の詳細については、「スキーマ」をご参照ください。
{
"name": "json_nested",
"type": "NESTED",
"primaryKey": false,
"innerSchema": {
"job": {
"name": "job",
"type": "TEXT",
"primaryKey": false
},
"ssn": {
"name": "ssn",
"type": "LITERAL",
"primaryKey": false
}
}
}フィールド | タイプ | 説明 |
type | 文字列 | フィールドのデータの型。フィールドの詳細については、「アプリケーションスキーマ」をご参照ください。 |
name | 文字列 | フィールド名。 |
primaryKey | ブール値 | フィールドがプライマリキーであるかどうかを示します。 |
joinWith | 配列 | 結合するデータテーブルのコレクション。 |
innerSchema | オブジェクト | フィールドタイプが |
データプッシュ
OBJECT 型の場合、フィールドの値は JSON 文字列です。
[
{
"cmd": "add",
"timestamp": 1401342874777,
"fields": {
"id": "1",
"title": "This is the title",
"json_nested": "[{\"job\":\"Other\",\"ssn\":\"abc\"}]"
}
},
{
"cmd": "update",
"timestamp": 1401342874778,
"fields": {
"id": "1",
"json_nested": "{\"job\":\"Security Officer\",\"ssn\":\"abc\"}" // Can be a single object
}
},
{
"cmd": "delete",
"fields": {
"id": "1"
}
}
]検索
OBJECT 型および NESTED 型の内部フィールドに対するインデックスの使用方法は、通常のフィールドと同じです。
NESTED 型の内部フィールドでフィルターするには、config 句に
sub_doc:groupまたはsub_doc:flatを追加します。NESTED 型の内部フィールドでソートするには、config 句に
sub_doc:flatを追加します。
例:
query=json_nested_job:'Other'&&filter=json_nested_ssn="abc"&&sort=json_nested_ssn;-RANK&&config=sub_doc:flatsub_doc:flat モードは、sub_doc:group モードよりもパフォーマンスがわずかに低下します。