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

OpenSearch:複合データ型

最終更新日:Jan 20, 2026

業界アルゴリズムエディションでは、OBJECT と NESTED の 2 種類の複合データ型をサポートしています。これらのデータ型を使用すると、複数のフィールドをネスト構造にまとめることができます。複合データ型を正しく使用することで、クエリの精度が向上し、不一致を防ぎ、複雑なデータ管理をより効率的に行うことができます。

注意事項

OBJECT 型と NESTED 型は、同じ構造の JSON データを受け入れ、基本的な構成も似ています。しかし、クエリの動作が根本的に異なります。NESTED 型はオブジェクトの境界を維持しますが、OBJECT 型はデータをフラット化します。

タイプ

OBJECT

NESTED

内部ストレージ方式

フラット化して格納するため、オブジェクトの境界が失われます。
例:
{ "user": [{"name":"Alice","age":30}, {"name":"Bob","age":25}] }
次のように格納されます:
user_name: ["Alice", "Bob"]
user_age: [30, 25]



































































親ドキュメントと子ドキュメントを個別に格納し、オブジェクトの完全性を維持します。

クエリセマンティクス

オブジェクト間のマッチングが発生する可能性がありますが、パフォーマンスは向上します。
例: user_name: "Alice" AND user_age: 25







これにより、異なるユーザーオブジェクト (Alice (age 30) と Bob (age 25)) がマッチする可能性があります。

マッチングは単一のオブジェクトに厳密に制限されます。
例: user_name: "Alice" AND user_age: 30







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 または NESTED の場合のデータ構造を指定します。ネストがサポートされています。

データプッシュ

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:flat
説明

sub_doc:flat モードは、sub_doc:group モードよりもパフォーマンスがわずかに低下します。