全部产品
Search
文档中心

OpenSearch:Tipe data majemuk

更新时间:Jan 21, 2026

Industry Algorithm Edition mendukung dua tipe data majemuk: OBJECT dan NESTED. Tipe-tipe ini memungkinkan Anda menggabungkan beberapa bidang ke dalam struktur bersarang. Penggunaan tipe data majemuk yang tepat meningkatkan akurasi kueri, mencegah ketidaksesuaian, serta mempermudah manajemen data kompleks.

Catatan penggunaan

Tipe OBJECT dan NESTED menerima data JSON dengan struktur yang sama dan memiliki konfigurasi dasar yang serupa. Namun, perilaku kuerinya secara mendasar berbeda: tipe NESTED mempertahankan batas objek, sedangkan tipe OBJECT meratakan data.

Tipe

OBJECT

NESTED

Metode penyimpanan dasar

Penyimpanan ter-rata (flattened), yang menghilangkan batas objek.
Contoh:
{ "user": [{"name":"Alice","age":30}, {"name":"Bob","age":25}] }
Disimpan sebagai:
user_name: ["Alice", "Bob"]
user_age: [30, 25]













Menggunakan penyimpanan independen untuk dokumen induk dan anak, sehingga menjaga integritas objek.

Semantik kueri

Pencocokan lintas objek dapat terjadi, tetapi performanya lebih baik.
Contoh: user_name: "Alice" AND user_age: 25

Kueri ini dapat mencocokkan objek pengguna yang berbeda: Alice (usia 30) dan Bob (usia 25).

Pencocokan dibatasi secara ketat pada satu objek saja.
Contoh: user_name: "Alice" AND user_age: 30

Hanya dapat mencocokkan satu objek pengguna di mana name="Alice" dan age=30.

Batasan

Bidang dalam tipe OBJECT dan NESTED diratakan berdasarkan level, dan level-level tersebut digabungkan menggunakan garis bawah (underscore). Bidang-bidang ini dapat dikonfigurasi dalam skema indeks dan sebagai bidang properti.

  • Industry Algorithm Edition memiliki batasan berikut untuk bidang OBJECT dan NESTED:

    • Jumlah total bidang tidak boleh melebihi 10.

    • Kedalaman bersarang maksimum adalah 5 level.

    • Bidang itu sendiri tidak dapat menjadi properti.

    • Bidang lain pada level yang sama tidak boleh memiliki nama yang diawali dengan awalan {OBJECT_field_name}_ atau {NESTED_field_name}_. Misalnya, jika bidang OBJECT bernama abc, bidang lain pada level yang sama tidak boleh bernama abc_d.

    • Hanya aplikasi Dedicated yang didukung.

  • Bidang dalam tipe OBJECT dan NESTED memiliki batasan berikut:

    • Alat analisis vektor tidak didukung.

    • Tidak dapat dikonfigurasi sebagai bidang routing, bidang pengurutan indeks terbalik, atau namespace indeks vektor.

    • Indeks majemuk tidak didukung.

    • Nama indeks yang dibuat harus sama dengan nama bidang.

    • Ekspresi pengurutan tidak didukung.

    • Tidak dapat dikonfigurasi sebagai bidang tampilan.

    • Tidak dapat dikonfigurasi sebagai bidang pelatihan model.

Contoh

Pembuatan aplikasi

Untuk informasi lebih lanjut mengenai sintaksis, lihat Schema.

{
  "name": "json_nested",
  "type": "NESTED",
  "primaryKey": false,
  "innerSchema": {
    "job": {
      "name": "job",
      "type": "TEXT",
      "primaryKey": false
    },
    "ssn": {
      "name": "ssn",
      "type": "LITERAL",
      "primaryKey": false
    }
  }
}

Bidang

Tipe

Deskripsi

type

String

Tipe data bidang tersebut. Untuk informasi lebih lanjut mengenai detail bidang, lihat Skema aplikasi.

name

String

Nama bidang.

primaryKey

Boolean

Menunjukkan apakah bidang tersebut merupakan primary key.

joinWith

Array

Kumpulan tabel data yang akan di-join.

innerSchema

Object

Menentukan struktur data ketika tipe bidang adalah OBJECT atau NESTED. Bersarang didukung.

Pendorongan data

Untuk tipe OBJECT, nilai bidang berupa string 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"
        }
    }
]

Pencarian

  • Penggunaan indeks untuk bidang dalam tipe OBJECT dan NESTED sama seperti bidang biasa.

  • Untuk memfilter berdasarkan bidang dalam tipe NESTED, tambahkan sub_doc:group atau sub_doc:flat ke klausa config.

  • Untuk mengurutkan berdasarkan bidang dalam tipe NESTED, tambahkan sub_doc:flat ke klausa config.

Contoh:

query=json_nested_job:'Other'&&filter=json_nested_ssn="abc"&&sort=json_nested_ssn;-RANK&&config=sub_doc:flat
Catatan

Mode sub_doc:flat memiliki performa sedikit lebih rendah dibandingkan mode sub_doc:group.