Kondisi filter memungkinkan Anda mengontrol baris mana dari tabel ApsaraDB RDS atau PolarDB yang disinkronkan ke OpenSearch. Hanya baris yang memenuhi kondisi tersebut yang diindeks. Kondisi ini berlaku baik untuk sinkronisasi penuh maupun inkremental.
Sintaksis yang didukung
Tipe bidang
Kondisi filter mendukung tipe bidang SQL berikut:
| Kategori | Tipe |
|---|---|
| Integer | TINYINT, SMALLINT, INTEGER, BIGINT |
| Floating-point | FLOAT, REAL, DOUBLE, NUMERIC, DECIMAL |
| Tanggal dan waktu | TIME, TIMESTAMP |
Bidang karakter (string) dan bidang DATE/DATETIME didukung melalui sintaksis khusus — lihat Skenario contoh.
Operator perbandingan
| Operator | Berlaku untuk |
|---|---|
<, >, <=, >= | Bidang numerik dan tanggal/waktu |
=, !=, <> | Bidang numerik dan karakter |
Operator logika
Hanya logika AND yang didukung. Pisahkan kondisi dengan koma (,) — bukan kata kunci AND.
# klausa WHERE SQL (tidak valid dalam kondisi filter OpenSearch)
where status=1 and type=2 # Tidak valid
status=1 and type=2 # Tidak valid
# Sintaksis kondisi filter OpenSearch
status=1,type=2 # ValidSkenario contoh
Filter berdasarkan nilai bidang karakter
Untuk menyinkronkan hanya baris di mana bidang string cocok dengan nilai tertentu:
field_string='a'
field_string!='b'Nilai string dapat menggunakan tanda kutip tunggal ('), tanda kutip ganda ("), atau tanpa tanda kutip.
Untuk menyinkronkan baris di mana bidang string kosong atau berisi string null:
field = ''
field != ''
field <> ''
field = 'null'
field = 'NULL'
field != 'null'
field != 'NULL'
field <> 'null'
field <> 'NULL'Filter berdasarkan nilai NULL
Untuk menyertakan atau mengecualikan baris di mana bidang numerik atau karakter bernilai NULL:
field = null
field = NULL
field != null
field != NULL
field <> null
field <> NULLIS NULLdanIS NOT NULLtidak didukung. Gunakan= nullatau!= nullsebagai gantinya.
Filter berdasarkan bidang tanggal atau datetime
Untuk menyinkronkan hanya baris yang dibuat setelah tanggal tertentu:
createtime>'2021-02-05 00:00:00'Nilai waktu harus mengikuti format YYYY-MM-DD HH:MM:SS.
Filter berdasarkan multiple kondisi
Untuk menggabungkan beberapa kondisi (hanya logika AND), pisahkan dengan koma:
status=1,literal_id='abcd',createtime>'2021-02-05 00:00:00'Catatan penggunaan
Kondisi filter hanya berlaku untuk sumber data ApsaraDB RDS dan PolarDB.
Gunakan nama bidang tabel dari database sumber, bukan nama bidang dari skema aplikasi OpenSearch.
Kondisi filter berlaku untuk sinkronisasi penuh maupun inkremental. Sebagai contoh, jika
status=1dikonfigurasi dan sebuah dokumen berubah daristatus=1menjadistatus=2di ApsaraDB RDS, dokumen tersebut tidak ditarik ke OpenSearch.Sintaksis berikut tidak didukung:
Logika OR
IS NULL/IS NOT NULLFungsi dan ekspresi, seperti
in(type,1,2,3)danlength(title)>10LIKEdanNOT LIKEKondisi tautologis seperti
1=1