Template BigQuery ke Elasticsearch adalah pipeline batch yang menyerap data dari tabel BigQuery ke dalam Elasticsearch sebagai dokumen. Template dapat membaca seluruh tabel atau membaca data tertentu menggunakan kueri yang disediakan.
Persyaratan pipeline
- Tabel BigQuery sumber harus ada.
- Host Elasticsearch di instance Google Cloud atau di Elastic Cloud dengan Elasticsearch versi 7.0 atau yang lebih baru. Harus dapat diakses dari mesin pekerja Dataflow.
Parameter template
Parameter | Deskripsi |
---|---|
connectionUrl |
URL Elasticsearch dalam format https://hostname:[port] atau tentukan CloudID jika menggunakan Elastic Cloud. |
apiKey |
Kunci API yang Dienkode Base64 yang digunakan untuk autentikasi. |
index |
Indeks Elasticsearch tempat permintaan akan diajukan, Misalnya, my-index . |
inputTableSpec |
(Opsional) Tabel BigQuery yang akan dibaca untuk disisipkan ke Elasticsearch. Tabel atau kueri harus diberikan. Misalnya, projectId:datasetId.tablename . |
query |
(Opsional) Kueri SQL untuk menarik data dari BigQuery. Tabel atau kueri harus diberikan. |
useLegacySql |
(Opsional) Tetapkan ke true untuk menggunakan legacy SQL (hanya berlaku jika menyediakan kueri). Default: false . |
batchSize |
(Opsional) Ukuran tumpukan dalam jumlah dokumen. Default: 1000 . |
batchSizeBytes |
(Opsional) Ukuran tumpukan dalam jumlah byte. Default: 5242880 (5mb). |
maxRetryAttempts |
(Opsional) Percobaan ulang maksimum, harus > 0. Default: no retries . |
maxRetryDuration |
(Opsional) Durasi percobaan ulang maksimum dalam milidetik, harus > 0. Default: no retries . |
propertyAsIndex |
(Opsional) Properti dalam dokumen yang diindeks yang nilainya akan menentukan metadata _index untuk disertakan dengan dokumen dalam permintaan massal (lebih diutamakan daripada UDF _index ). Default: tidak ada. |
propertyAsId |
(Opsional) Properti dalam dokumen yang diindeks yang nilainya akan menentukan metadata _id untuk disertakan dengan dokumen dalam permintaan massal (lebih diutamakan daripada UDF _id ). Default: tidak ada. |
javaScriptIndexFnGcsPath |
(Opsional) Jalur Cloud Storage ke sumber UDF JavaScript untuk fungsi yang akan menentukan metadata _index yang akan disertakan dengan dokumen dalam permintaan massal. Default: tidak ada. |
javaScriptIndexFnName |
(Opsional) Nama fungsi UDF JavaScript untuk fungsi yang akan menentukan metadata _index untuk disertakan dengan dokumen dalam permintaan massal. Default: tidak ada. |
javaScriptIdFnGcsPath |
(Opsional) Jalur Cloud Storage ke sumber UDF JavaScript untuk fungsi yang akan menentukan metadata _id yang akan disertakan dengan dokumen dalam permintaan massal. Default: tidak ada. |
javaScriptIdFnName |
(Opsional) Nama fungsi UDF JavaScript untuk fungsi yang akan menentukan metadata _id untuk disertakan dengan dokumen dalam permintaan massal. Default: tidak ada. |
javaScriptTypeFnGcsPath |
(Opsional) Jalur Cloud Storage ke sumber UDF JavaScript untuk fungsi yang akan menentukan metadata _type yang akan disertakan dengan dokumen dalam permintaan massal. Default: tidak ada. |
javaScriptTypeFnName |
(Opsional) Nama fungsi UDF JavaScript untuk fungsi yang akan menentukan metadata _type untuk disertakan dengan dokumen dalam permintaan massal. Default: tidak ada. |
javaScriptIsDeleteFnGcsPath |
(Opsional) Jalur Cloud Storage ke sumber UDF JavaScript untuk fungsi yang akan menentukan apakah dokumen harus dihapus, bukan disisipkan atau diperbarui. Fungsi ini harus menampilkan nilai string "true" atau "false" . Default: tidak ada. |
javaScriptIsDeleteFnName |
(Opsional) Nama fungsi UDF JavaScript untuk fungsi yang akan menentukan apakah dokumen harus dihapus, bukan disisipkan atau diperbarui. Fungsi ini harus menampilkan nilai string "true" atau "false" . Default: tidak ada. |
usePartialUpdate |
(Opsional) Apakah akan menggunakan update sebagian (update, bukan membuat atau mengindeks, mengizinkan dokumen parsial) dengan permintaan Elasticsearch. Default: false . |
bulkInsertMethod |
(Opsional) Apakah akan menggunakan INDEX (indeks, mengizinkan pembaruan dan penyisipan) atau CREATE (membuat, error pada _id duplikat) dengan permintaan massal Elasticsearch. Default: CREATE . |
Fungsi yang ditentukan pengguna (UDF)
Template ini mendukung fungsi yang ditentukan pengguna (UDF) di beberapa titik dalam pipeline, yang dijelaskan di bawah. Untuk mengetahui informasi selengkapnya, lihat Membuat fungsi yang ditentukan pengguna untuk template Dataflow.
Fungsi indeks
Menampilkan indeks yang memiliki dokumen tersebut.
Parameter template:
javaScriptIndexFnGcsPath
: URI Cloud Storage file JavaScript.javaScriptIndexFnName
: nama fungsi JavaScript.
Spesifikasi fungsi:
- Input: dokumen Elasticsearch, yang diserialisasi sebagai string JSON.
- Output: nilai kolom metadata
_index
dokumen.
Fungsi ID dokumen
Menampilkan ID dokumen.
Parameter template:
javaScriptIdFnGcsPath
: URI Cloud Storage file JavaScript.javaScriptIdFnName
: nama fungsi JavaScript.
Spesifikasi fungsi:
- Input: dokumen Elasticsearch, yang diserialisasi sebagai string JSON.
- Output: nilai kolom metadata
_id
dokumen.
Fungsi penghapusan dokumen
Menentukan apakah akan menghapus dokumen. Untuk menggunakan fungsi ini, tetapkan mode sisipkan massal ke INDEX
dan sediakan fungsi ID dokumen.
Parameter template:
javaScriptIsDeleteFnGcsPath
: URI Cloud Storage file JavaScript.javaScriptIsDeleteFnName
: nama fungsi JavaScript.
Spesifikasi fungsi:
- Input: dokumen Elasticsearch, yang diserialisasi sebagai string JSON.
- Output: menampilkan string
"true"
untuk menghapus dokumen, atau"false"
untuk memperbarui dan menyisipkan dokumen.
Fungsi jenis pemetaan
Menampilkan jenis pemetaan dokumen.
Parameter template:
javaScriptTypeFnGcsPath
: URI Cloud Storage file JavaScript.javaScriptTypeFnName
: nama fungsi JavaScript.
Spesifikasi fungsi:
- Input: dokumen Elasticsearch, yang diserialisasi sebagai string JSON.
- Output: nilai kolom metadata
_type
dokumen.
Menjalankan template
Konsol
- Buka halaman Create job from template Dataflow. Buka Buat tugas dari template
- Di kolom Job name, masukkan nama pekerjaan yang unik.
- Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region
default-nya adalah
us-central1
.Untuk daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.
- Dari menu drop-down Dataflow template, pilih the BigQuery to Elasticsearch template.
- Di kolom parameter yang disediakan, masukkan parameter value Anda.
- Klik Run job.
gcloud
Di shell atau terminal Anda, jalankan template:
gcloud dataflow flex-template run JOB_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/BigQuery_to_Elasticsearch \ --parameters \ inputTableSpec=INPUT_TABLE_SPEC,\ connectionUrl=CONNECTION_URL,\ apiKey=APIKEY,\ index=INDEX
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud tempat Anda ingin menjalankan tugas DataflowJOB_NAME
: nama pekerjaan unik pilihan AndaREGION_NAME
: region tempat Anda ingin men-deploy tugas Dataflow, misalnyaus-central1
VERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi terbaru template, yang tersedia di folder induk tidak bertanggal di bucket— gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat di folder induk bertanggal masing-masing dalam bucket— gs://dataflow-templates-REGION_NAME/
INPUT_TABLE_SPEC
: nama tabel BigQuery Anda.CONNECTION_URL
: URL Elasticsearch Anda.APIKEY
: kunci API yang dienkode base64 untuk autentikasi.INDEX
: indeks Elasticsearch Anda.
API
Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk informasi selengkapnya tentang API dan cakupan otorisasinya, lihat projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "inputTableSpec": "INPUT_TABLE_SPEC", "connectionUrl": "CONNECTION_URL", "apiKey": "APIKEY", "index": "INDEX" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Elasticsearch", } }
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud tempat Anda ingin menjalankan tugas DataflowJOB_NAME
: nama pekerjaan unik pilihan AndaLOCATION
: region tempat Anda ingin men-deploy tugas Dataflow, misalnyaus-central1
VERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi terbaru template, yang tersedia di folder induk tidak bertanggal di bucket— gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat di folder induk bertanggal masing-masing dalam bucket— gs://dataflow-templates-REGION_NAME/
INPUT_TABLE_SPEC
: nama tabel BigQuery Anda.CONNECTION_URL
: URL Elasticsearch Anda.APIKEY
: kunci API yang dienkode base64 untuk autentikasi.INDEX
: indeks Elasticsearch Anda.
Langkah selanjutnya
- Pelajari Template Dataflow.
- Lihat daftar template yang disediakan Google.