Saat menyinkronkan data dari sumber data ke OpenSearch, nilai bidang di sumber mungkin perlu ditransformasi sebelum diindeks—misalnya, memisahkan string yang dipisahkan koma menjadi array atau menghapus tag HTML. Plug-in pemrosesan data menangani transformasi ini secara otomatis selama sinkronisasi, sehingga Anda tidak perlu memproses data di luar OpenSearch.
Plug-in pemrosesan data hanya tersedia saat menyinkronkan data melalui sumber data yang telah dikonfigurasi. Jika Anda mengunggah data melalui operasi API atau SDK OpenSearch, proses data tersebut sebelum diunggah.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Menyiapkan sumber data yang dikonfigurasi untuk aplikasi OpenSearch Anda
Menentukan pemetaan bidang antara tabel sumber dan tabel OpenSearch Anda
Konfigurasikan plug-in saat menyiapkan sumber data, bukan saat mendefinisikan skema aplikasi. Plug-in hanya tersedia setelah sumber data dikonfigurasi.
Batasan sumber data
Perhatikan batasan berikut sebelum mengonfigurasi plug-in:
ApsaraDB RDS dan PolarDB: Tabel OpenSearch dapat dikaitkan dengan beberapa tabel sumber (mendukung sharding database dan tabel).
MaxCompute: Tabel OpenSearch hanya dapat dikaitkan dengan satu tabel sumber. Untuk menyinkronkan dari beberapa tabel sumber MaxCompute, gabungkan terlebih dahulu menjadi satu tabel.
Plug-in yang tersedia
OpenSearch menyediakan lima plug-in untuk transformasi bidang selama sinkronisasi:
| Plug-in | Jenis transformasi | Fungsinya |
|---|---|---|
| JsonKeyValueExtractor | Ekstraksi JSON | Mengekstraksi nilai kunci tertentu dari bidang sumber berformat JSON |
| MultiValueSpliter | Pemisahan nilai | Memisahkan bidang sumber menjadi beberapa nilai menggunakan delimiter |
| KeyValueExtractor | Ekstraksi pasangan kunci-nilai | Mengekstraksi kunci dan nilai dari bidang sumber berformat pasangan kunci-nilai |
| StringCatenateExtractor | Konkatenasi string | Menggabungkan nilai dari beberapa bidang menjadi satu string |
| HTMLTagRemover | Penghapusan HTML | Menghapus tag HTML dari nilai bidang sumber |
JsonKeyValueExtractor
Mengekstraksi nilai kunci tertentu dari bidang sumber berformat JSON dan memetakannya ke bidang tujuan. Hanya nilai dari kunci yang ditentukan yang dapat diekstraksi.
Persyaratan tipe: Tipe nilai yang diekstraksi harus sesuai dengan tipe bidang tujuan. Jika tipe tidak cocok, nilai yang diekstraksi akan dibuang tanpa pemberitahuan.
Konversi array: Jika nilai yang diekstraksi berupa array JSON, nilai tersebut secara otomatis dikonversi menjadi nilai bidang bertipe Array.
Contoh
Nilai bidang sumber:
{"title": "the content", "body": "the content"}Untuk mengekstraksi kunci title, konfigurasikan plug-in untuk menargetkan title. Bidang tujuan menerima "the content".
Untuk tipe Array:
Sumber LITERAL_ARRAY:
{"tags": ["a", "b", "c"]}Sumber INT_ARRAY:
{"tags": [1, 2, 3]}
MultiValueSpliter
Memisahkan nilai bidang sumber menjadi beberapa nilai menggunakan delimiter yang ditentukan, dan menuliskan hasilnya ke bidang tujuan bertipe Array.
Persyaratan tipe: Bidang tujuan harus bertipe Array.
Dukungan delimiter:
| Jenis delimiter | Cara menentukan |
|---|---|
Karakter non-printable umum (misalnya, \t) | Tulis langsung |
| Karakter non-printable tidak umum | Gunakan notasi Unicode (misalnya, \u001D) |
Delimiter multi-karakter (misalnya, ##, \t\t) | Tulis langsung |
Contoh
Nilai bidang sumber: 1,2,3
Tentukan , sebagai delimiter.
Untuk detail konfigurasi lebih lanjut, lihat Konfigurasi MultiValueSpliter.
KeyValueExtractor
Mengekstraksi kunci dan nilai tertentu dari bidang sumber yang diformat sebagai pasangan kunci-nilai, dan memetakan hasilnya ke bidang tujuan. Hanya nilai dari kunci yang ditentukan yang dapat diekstraksi. Delimiter tidak wajib digunakan.
Persyaratan tipe: Tipe nilai yang diekstraksi harus sesuai dengan tipe bidang tujuan. Jika tipe tidak cocok, nilai tersebut akan dibuang tanpa pemberitahuan. Jika delimiter memisahkan nilai yang diekstraksi, bidang tujuan harus bertipe Array.
Perilaku kunci duplikat: Jika terdapat dua kunci identik, hanya nilai dari kunci kedua yang diekstraksi.
Contoh
Nilai bidang sumber: key1:value1,value2;key2:value3
Konfigurasi:
Pasangan kunci-nilai dipisahkan oleh titik koma (
;): memisahkankey1:value1,value2darikey2:value3Kunci dan nilai dipisahkan oleh titik dua (
:): memisahkan kunci dari nilaiNilai dipisahkan oleh koma (
,): memisahkan beberapa nilai untuk satu kunci
StringCatenateExtractor
Menggabungkan nilai dari beberapa bidang tabel tujuan menjadi satu string dalam urutan yang ditentukan.
Persyaratan tipe: Plug-in ini tidak dapat menggabungkan bidang bertipe INT. Kami menyarankan Anda menggunakan bidang bertipe LITERAL.
Sumber bidang: Bidang harus berasal dari tabel tujuan, bukan tabel sumber. Pisahkan beberapa nama bidang dengan koma (,).
Variabel sistem: Gunakan $table untuk menyertakan nama tabel saat ini dalam string yang digabungkan. $table hanya diisi jika wildcard sharding tabel dikonfigurasi.
Contoh
Untuk menggabungkan field1 dan field2 dengan pemisah garis bawah (_).
HTMLTagRemover
Menghapus semua tag HTML dari nilai bidang sumber. Bidang tujuan menerima konten teks biasa.
Contoh
Nilai bidang sumber: <div id="copyright">OpenSearch</div>
Setelah diproses, nilai bidang tujuan menjadi: OpenSearch
Batasan
| Batasan | Detail |
|---|---|
| Unggahan API dan SDK | Plug-in tidak tersedia. Proses data sebelum mengunggah. |
| Sumber data MaxCompute | Satu tabel OpenSearch hanya dipetakan ke satu tabel sumber MaxCompute |
| StringCatenateExtractor | Tidak dapat menggabungkan bidang bertipe INT |
| JsonKeyValueExtractor dan KeyValueExtractor | Ketidaksesuaian tipe antara nilai yang diekstraksi dan bidang tujuan menyebabkan kehilangan data tanpa pemberitahuan |
| Waktu konfigurasi plug-in | Hanya dapat dikonfigurasi setelah sumber data disiapkan; tidak tersedia saat definisi skema |