OpenSearch menyediakan beberapa plugin pemrosesan data untuk transformasi data sederhana. Topik ini menjelaskan plugin-plugin sumber data tersebut.
Ikhtisar
Anda dapat mengimpor data ke OpenSearch menggunakan API, SDK, atau antarmuka unggah. Anda juga dapat menyinkronkan data langsung dari database ApsaraDB. Jika Anda mengunggah data melalui API atau SDK, ikuti referensi API untuk mengunggah data secara langsung. Konfigurasi plugin yang dijelaskan dalam topik ini tidak didukung untuk metode tersebut, sehingga Anda harus memproses data sebelum mendorongnya (push). Saat menyinkronkan data dari database cloud, Anda dapat mengonfigurasi informasi sumber data di Konsol dan menggunakan plugin pemrosesan data untuk transformasi sederhana saat mengatur pemetaan bidang.
Sebuah tabel OpenSearch dapat mendukung beberapa tabel sumber RDS dan PolarDB, seperti dalam skenario sharding. Namun, Anda hanya dapat mengonfigurasi satu sumber ODPS. Jika memerlukan beberapa tabel sumber ODPS, Anda harus menggabungkan data tersebut ke dalam satu tabel sebelum mengimpornya.
Plugin pemrosesan data
Beberapa fitur atau fungsi pencarian memerlukan tipe bidang khusus. Misalnya, bidang bertipe Array harus ditransformasikan menggunakan plugin berikut; Anda tidak dapat memasukkannya secara langsung.
Konfigurasikan plugin-plugin ini selama pengaturan sumber data, bukan saat mendefinisikan skema aplikasi. Anda hanya dapat menyiapkan plugin setelah mengonfigurasi sumber data.
|
Nama item konfigurasi |
Deskripsi |
Contoh |
|
JsonKeyValueExtractor |
Mengekstrak nilai dari kunci tertentu pada bidang sumber dalam format JSON. Nilai yang diekstrak menjadi konten bidang tujuan. Anda hanya dapat mengekstrak nilai dari satu kunci. |
Mengekstrak nilai kunci `title` dari `{"title":"the content","body":"the content"}`. Jika nilainya berupa array JSON, nilai tersebut dikonversi menjadi konten bidang bertipe Array. Pastikan tipe data nilai yang diekstrak sesuai dengan tipe data bidang tujuan; jika tidak, data akan hilang. Format array JSON ditentukan oleh OpenSearch. Sebagai contoh, untuk tipe bidang `literal_array`, formatnya adalah `{"tags":["a","b","c"]}`. Untuk tipe bidang `int_array`, formatnya adalah `{"tags":[1,2,3]}`. |
|
MultiValueSplitter |
Memisahkan konten bidang sumber menjadi beberapa nilai berdasarkan pemisah yang ditentukan. Nilai hasil pemisahan digunakan sebagai konten bidang tujuan. Bidang tujuan harus bertipe ARRAY. Jika pemisahnya merupakan karakter non-printable, representasikan menggunakan karakter Unicode, seperti `\u001D`. |
Jika bidang sumber berisi `1,2,3`, Anda dapat menentukan koma (`,`) sebagai pemisah. |
|
KeyValueExtractor |
Mengekstrak nilai dari kunci tertentu pada bidang sumber yang berformat key-value (KV). Nilai yang diekstrak digunakan sebagai konten bidang tujuan. Anda hanya dapat mengekstrak nilai dari satu kunci. Parameter untuk menentukan pemisah bersifat opsional. |
Misalnya, bidang sumber berisi `key1:value1,value2;key2:value3`. Dalam contoh ini, pemisah kunci adalah titik koma (;), pemisah key-value adalah titik dua (:), dan pemisah multi-nilai adalah koma (,). Jika pemisah multi-nilai dikonfigurasi, nilai yang diekstrak dikonversi menjadi konten bidang bertipe Array. Pastikan tipe data nilai yang diekstrak sesuai dengan tipe data bidang tujuan; jika tidak, data akan hilang. Jika bidang sumber berisi kunci duplikat, hanya nilai dari kunci terakhir yang diekstrak. |
|
StringConcatenateExtractor |
Menggabungkan nilai dari beberapa bidang yang ditentukan menjadi satu string dalam urutan tertentu. Plugin ini tidak mendukung bidang bertipe `int`; gunakan bidang bertipe `literal` sebagai gantinya. Bidang dalam daftar harus dipisahkan dengan koma dan merupakan bidang tujuan. |
Misalnya, Anda dapat menggabungkan nilai `field1` dan `field2` dengan garis bawah (_) untuk membentuk konten bidang baru. Selain itu, Anda dapat menggunakan variabel sistem `$table` untuk mengambil nama tabel saat ini. Variabel `$table` hanya tersedia ketika karakter wildcard untuk sharding tabel dikonfigurasi. |
|
HTMLTagRemover |
Menghapus tag HTML dari konten bidang sumber. Konten tanpa tag HTML disalin ke bidang tujuan. Jika bidang sumber juga merupakan bidang tujuan, konten aslinya akan diganti. |
Plugin ini mengurai teks <div id="copyright">OpenSearch</div> dan mengekstrak "OpenSearch". |
Untuk praktik terbaik, lihat Pengaturan plugin MultiValueSplitter.