Pencarian elastis

Elasticsearch Reindex Ubah Jenis Bidang

Elasticsearch Reindex Ubah Jenis Bidang

Bekerja dengan database sangat menyenangkan tetapi terkadang bisa menjadi tantangan, terutama ketika berhadapan dengan data yang sudah ada.

Misalnya, jika Anda ingin mengubah jenis bidang tertentu, Anda mungkin perlu menghapus layanan, yang dapat berakibat fatal, terutama pada layanan yang memproses data dalam jumlah besar.

Untungnya, kita dapat menggunakan fitur canggih Elasticsearch seperti Pengindeksan Ulang, mencerna node, saluran pipa, dan prosesor untuk membuat tugas seperti itu menjadi sangat mudah.

Tutorial ini akan menunjukkan cara mengubah jenis bidang dalam indeks tertentu ke indeks lain, menggunakan node Elasticsearch Ingest. Menggunakan pendekatan ini akan menghilangkan waktu henti yang memengaruhi layanan sambil tetap mengelola untuk melakukan tugas perubahan jenis bidang.

Pengantar Ingest Node

Node penyerapan Elasticsearch memungkinkan Anda untuk melakukan pra-proses dokumen sebelum pengindeksan mereka.

Sebuah node Elasticsearch adalah contoh spesifik dari Elasticsearch; node yang terhubung (lebih dari satu) membuat satu cluster.

Anda dapat melihat node yang tersedia di cluster yang sedang berjalan dengan permintaan:

DAPATKAN /_node/

Perintah cURL untuk ini adalah:

curl -XGET "http://localhost:9200/_nodes/"

Menjalankan perintah ini akan memberi Anda informasi besar tentang node, seperti yang ditunjukkan di bawah ini (output terpotong):


"_node" :
"jumlah" : 3,
"berhasil" : 3,
"gagal" : 0
,
"cluster_name" : "22e0bee6ef91461d82d9b0f1b4b13b4a",
"simpul" :
"gSlMjTKyTemoOX-EO7Em4w" :
"name" : "instance-0000000003",
"transport_address" : "172.28.86.133:19925",
"tuan rumah" : "172.28.86.133",
"ip" : "172.28.86.133",
"versi" : "7.10.2",
"build_flavor" : "default",
"build_type" : "buruh pelabuhan",
"build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer" : 214748364,
"peran" : [
"data",
"data_dingin",
"data_konten",
"data_panas",
"data_hangat",
"menelan",
"menguasai",
"klien_kluster_jauh",
"mengubah"
],
"atribut" :
"logical_availability_zone" : "zona-0",
"server_name" : "instance-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a",
"availability_zone" : "us-west-1c",
"xpack.terpasang" : "benar",
"instance_configuration" : "aws.data.tinggi.i3",
"mengubah.simpul" : "benar",
"wilayah" : "kita-barat-1"
,
"pengaturan" :
"s3" :
"klien" :
"elastis-internal-22e0be" :
"titik akhir" : "s3-us-west-1.amazonaw.com"


,
--------------------------------keluaran terpotong---------------------

Secara default, semua node Elasticsearch mengaktifkan penyerapan dan mampu menangani operasi penyerapan. Namun, untuk operasi penyerapan yang berat, Anda dapat membuat satu node yang didedikasikan untuk penyerapan saja.

Untuk menangani pre_process, sebelum mengindeks dokumen, kita perlu mendefinisikan pipeline yang menyatakan seri preprocessors.

Praprosesor adalah kumpulan instruksi yang dibungkus di sekitar pipa dan dieksekusi satu per satu.

Berikut ini adalah sintaks umum tentang cara mendefinisikan pipeline:


"deskripsi" : "Ubah aku",
"prosesor" : [
"mengubah" :
"bidang" : "id",
"tipe": "bilangan bulat"
]

Properti description mengatakan apa yang harus dicapai oleh pipeline. Parameter berikutnya adalah praprosesor, diteruskan sebagai daftar dalam urutan pelaksanaannya.

Buat Saluran Konversi

Untuk membuat pipeline yang akan kita gunakan untuk mengonversi suatu tipe, gunakan permintaan PUT dengan _ingest API endpoint sebagai:

PUT _ingest/pipa/convert_pipeline

“description”: “mengubah field field dayOfWeek menjadi long dari integer”,
"prosesor" : [

"mengubah" :
"field" : "hariMinggu",
"tipe": "panjang"


]

Untuk cURL, gunakan perintah:

curl -XPUT "http://localhost:9200/_ingest/pipeline/convert_pipeline" -H 'Content-Type: application/json' -d'  "description": "mengonversi bidang dayOfWeek ke long from integer",  " prosesor" : [          "convert" :        "field" : "dayOfWeek",        "type": "long"            ]'

Indeks ulang dan Konversi Tipe

Setelah kita memiliki pipeline di node ingest, yang perlu kita lakukan hanyalah memanggil API pengindeksan dan meneruskan pipeline sebagai argumen di bagian akhir badan permintaan sebagai:

POST _reindex

“sumber”:
"index": "kibana_sample_data_flights"
,
"tujuan":
"index": "kibana_sample_type_diff",
"pipa": "convert_pipeline"

Untuk cURL:

curl -XPOST "http://localhost:9200/_reindex" -H 'Content-Type: application/json' -d'  "source":     "index": "kibana_sample_data_flights"  ,  "dest":     "index ": "kibana_sample_type_diff",    "pipeline": "convert_pipeline"  '

 Verifikasi Konversi

Untuk memverifikasi bahwa pipeline telah diterapkan dengan benar, gunakan permintaan GET untuk mengambil bidang spesifik tersebut sebagai:

DAPATKAN /kibana_sample_data_flights/_mapping/field/dayOfWeek
DAPATKAN /kibana_sample_type_diff/_mapping/field/dayOfWeek

Ini harus mengembalikan data sebagai:

-----------------------INDEKS ASLI---------------------------

"kibana_sample_data_flights" :
"pemetaan" :
"hari dalam seminggu" :
"full_name" : "hariMinggu",
"pemetaan" :
"hari dalam seminggu" :
"tipe" : "bilangan bulat"






-------------------------DATA YANG DIINDEX KEMBALI-------------------------------

"kibana_sample_type_diff" :
"pemetaan" :
"hari dalam seminggu" :
"full_name" : "hariMinggu",
"pemetaan" :
"hari dalam seminggu" :
"tipe" : "panjang"





Kesimpulan

Dalam panduan ini, kita telah melihat cara bekerja dengan node Elasticsearch Ingest untuk pra-proses dokumen sebelum pengindeksan, sehingga mengubah bidang dari satu jenis ke jenis lainnya.

Pertimbangkan dokumentasi untuk mempelajari lebih lanjut.

https://www.elastis.co/guide/en/elasticsearch/reference/master/ingest.html

Cara membalikkan arah gulir Mouse dan Touchpads di Windows 10
Mouse dan Panel sentuhs tidak hanya membuat komputasi menjadi mudah tetapi juga lebih efisien dan tidak memakan banyak waktu. Kami tidak dapat membaya...
Cara mengubah penunjuk Mouse dan ukuran kursor, warna & skema pada Windows 10
Penunjuk mouse dan kursor di Windows 10 adalah aspek yang sangat penting dari sistem operasi. Ini dapat dikatakan untuk sistem operasi lain juga, jadi...
Mesin Game Gratis dan Sumber Terbuka untuk Mengembangkan Game Linux
Artikel ini akan membahas daftar mesin game sumber terbuka dan gratis yang dapat digunakan untuk mengembangkan game 2D dan 3D di Linux. Ada banyak mes...