Template BigQuery ke Elasticsearch

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

  1. Buka halaman Create job from template Dataflow.
  2. Buka Buat tugas dari template
  3. Di kolom Job name, masukkan nama pekerjaan yang unik.
  4. 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.

  5. Dari menu drop-down Dataflow template, pilih the BigQuery to Elasticsearch template.
  6. Di kolom parameter yang disediakan, masukkan parameter value Anda.
  7. 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 Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • 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 Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • 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