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. | Menggunakan penyimpanan independen untuk dokumen induk dan anak, sehingga menjaga integritas objek. |
Semantik kueri | Pencocokan lintas objek dapat terjadi, tetapi performanya lebih baik. Kueri ini dapat mencocokkan objek pengguna yang berbeda: Alice (usia 30) dan Bob (usia 25). | Pencocokan dibatasi secara ketat pada satu objek saja. 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 bernamaabc, bidang lain pada level yang sama tidak boleh bernamaabc_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 |
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:groupatausub_doc:flatke klausa config.Untuk mengurutkan berdasarkan bidang dalam tipe NESTED, tambahkan
sub_doc:flatke klausa config.
Contoh:
query=json_nested_job:'Other'&&filter=json_nested_ssn="abc"&&sort=json_nested_ssn;-RANK&&config=sub_doc:flatMode sub_doc:flat memiliki performa sedikit lebih rendah dibandingkan mode sub_doc:group.