Skema mendefinisikan struktur data aplikasi OpenSearch. Skema ini terdiri dari dua objek tingkat atas: tables, yang menjelaskan cara data Anda diorganisasi, dan indexes, yang mengatur cara data tersebut dicari dan difilter. Setiap field dalam tabel harus didaftarkan dalam skema sebelum dapat digunakan untuk pencarian atau sebagai filter.
Contoh
{
"tables": {
"main": {
"primaryTable": true,
"name": "main",
"fields": {
"id": {
"name": "id",
"type": "LITERAL",
"primaryKey": true
},
"title": {
"name": "title",
"type": "TEXT",
"primaryKey": false
},
"buy": {
"name": "buy",
"type": "INT",
"primaryKey": false
},
"cate_id": {
"name": "cate_id",
"type": "INT",
"primaryKey": false
},
"cate_name": {
"name": "cate_name",
"type": "LITERAL",
"primaryKey": false
}
}
}
},
"indexes": {
"searchFields": {
"id": {
"fields": [
"id"
]
},
"default": {
"fields": [
"title"
],
"analyzer": "chn_standard"
},
"cate_name": {
"fields": [
"cate_name"
]
}
},
"filterFields": [
"id",
"buy",
"cate_id",
"cate_name"
]
}
}Contoh ini mendefinisikan satu tabel (main) dengan lima field. Objek indexes memetakan tiga field tersebut ke indeks pencarian dan mencantumkan empat field sebagai field filter (atribut).
Struktur
Schema
| Field | Type | Required | Description |
|---|---|---|---|
tables | Object | Yes | Definisi tabel. Setiap kunci adalah nama tabel; lihat Table untuk struktur setiap nilai. |
indexes | Object | Yes | Konfigurasi indeks. Lihat Index. |
Table
Contoh
{
"primaryTable": true,
"name": "main",
"fields": {
"id": {
"name": "id",
"type": "LITERAL",
"primaryKey": true
},
"title": {
"name": "title",
"type": "TEXT",
"primaryKey": false
}
}
}Struktur
| Field | Type | Required | Description |
|---|---|---|---|
name | String | Yes | Nama tabel. |
primaryTable | Boolean | Yes | Menentukan apakah tabel ini merupakan tabel utama. |
fields | Object | Yes | Definisi field. Setiap kunci adalah nama field; lihat Field untuk struktur setiap nilai. |
Field
Contoh
{
"name": "json_nested",
"type": "NESTED",
"primaryKey": false,
"innerSchema": {
"job": {
"name": "job",
"type": "TEXT",
"primaryKey": false
},
"ssn": {
"name": "ssn",
"type": "LITERAL",
"primaryKey": false
}
}
}Struktur
| Field | Type | Required | Description |
|---|---|---|---|
name | String | Yes | Nama field. |
type | String | Yes | Tipe field: LITERAL, TEXT, INT, NESTED, atau OBJECT. Untuk detailnya, lihat Application schema. |
primaryKey | Boolean | Yes | Menentukan apakah field ini merupakan primary key. |
joinWith | Array | No | Menghubungkan field ini ke tabel data eksternal yang terkait. |
innerSchema | Object | No | Struktur field bersarang. Diperlukan ketika type bernilai OBJECT atau NESTED. Mendukung beberapa tingkat bersarang. |
Index
Contoh
{
"searchFields": {
"default": {
"fields": [
"title"
],
"analyzer": "chn_standard"
},
"id": {
"fields": [
"id"
]
}
},
"filterFields": [
"id"
]
}Struktur
| Field | Type | Required | Description |
|---|---|---|---|
searchFields | Object | Yes | Definisi indeks pencarian teks penuh. Setiap kunci adalah nama indeks; lihat SearchField untuk struktur setiap nilai. |
filterFields | Array | Yes | Daftar field atribut. |
SearchField
Contoh
{
"fields": ["title"],
"analyzer": "chn_standard"
}Struktur
| Field | Type | Required | Description |
|---|---|---|---|
fields | Array | Yes | Field tabel yang disertakan dalam indeks pencarian ini. |
analyzer | String | No | Alat analisis yang diterapkan. Untuk alat analisis kustom, lihat Custom analyzers. Untuk alat analisis bawaan, lihat Built-in analyzers di bawah dan Built-in analyzers. |
Built-in analyzers
Chinese
| Analyzer | Description |
|---|---|
chn_standard | Analisis bahasa Tionghoa umum. Gunakan untuk sebagian besar field pencarian teks penuh berbahasa Tionghoa. |
chn_single | Analisis karakter Tionghoa tunggal. Gunakan ketika setiap karakter diperlakukan sebagai token independen. |
chn_ecommerce | Analisis e-commerce Tionghoa. Dioptimalkan untuk nama produk dan kueri belanja. |
chn_film | Analisis video dan hiburan Tionghoa. Dioptimalkan untuk judul film dan konten media. |
chn_scene_name | Analisis nama pribadi Tionghoa. |
chn_scene_org | Analisis nama organisasi Tionghoa. |
chn_it_content | Analisis konten IT untuk teks berbahasa Tionghoa. |
English
| Analyzer | Description |
|---|---|
eng_standard | Analisis bahasa Inggris dengan stemming. Mencocokkan varian kata (misalnya, "running" cocok dengan "run"). |
eng_nostem | Analisis bahasa Inggris tanpa stemming. Hanya mencocokkan bentuk kata eksak. |
Language-agnostic and special-purpose
| Analyzer | Description |
|---|---|
simple | Analisis sederhana. Memisahkan berdasarkan spasi dan tanda baca, serta mengubah token menjadi huruf kecil. |
keyword | Analisis keyword. Memperlakukan seluruh nilai field sebagai satu token. Gunakan untuk field yang memerlukan pencocokan eksak. |
fuzzy | Analisis fuzzy. Menghasilkan varian token untuk mendukung pencocokan perkiraan. |
numeric | Analisis numerik. |
geo | Analisis geolokasi. Gunakan untuk field koordinat geografis. |
first_letter | Analisis ejaan pinyin sederhana. Mengindeks huruf pertama dari setiap suku kata pinyin. |
full_pinyin | Analisis ejaan pinyin lengkap. Mengindeks transkripsi pinyin secara utuh. |