Pencarian Elastik

Jenis Medan Tukar Reindex Elasticsearch

Jenis Medan Tukar Reindex Elasticsearch

Bekerja dengan pangkalan data sangat menyeronokkan tetapi kadang-kadang boleh mencabar, terutama ketika berurusan dengan data yang sudah ada.

Sebagai contoh, jika anda ingin mengubah jenis bidang tertentu, ia mungkin memerlukan anda untuk menghentikan perkhidmatan, yang boleh membawa kesan buruk, terutama dalam perkhidmatan yang memproses sejumlah besar data.

Nasib baik, kita dapat menggunakan ciri-ciri hebat Elasticsearch seperti Reindexing, nod penyerapan, saluran paip, dan pemproses untuk membuat tugas seperti itu sangat mudah.

Tutorial ini akan menunjukkan kepada anda cara mengubah jenis medan dalam indeks tertentu ke indeks lain, menggunakan nod Elasticsearch Ingest. Menggunakan pendekatan ini akan menghilangkan waktu henti yang mempengaruhi perkhidmatan sementara masih berjaya melakukan tugas perubahan jenis lapangan.

Pengenalan Nod Pengambilan

Nod penyerapan Elasticsearch membolehkan anda memproses dokumen sebelum pengindeksan.

Node Elasticsearch adalah contoh khusus Elasticsearch; nod bersambung (lebih daripada satu) membuat kluster tunggal.

Anda dapat melihat node yang tersedia di kluster berjalan dengan permintaan:

DAPATKAN / _node /

Perintah cURL untuk ini adalah:

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

Melaksanakan perintah ini akan memberi anda maklumat besar mengenai nod, seperti yang ditunjukkan di bawah (output terpotong):


"_node":
"jumlah": 3,
"berjaya": 3,
"gagal": 0
,
"nama_kelompok": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"nod":
"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": "lalai",
"build_type": "buruh pelabuhan",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer": 214748364,
"peranan": [
"data",
"data_cold",
"data_content",
"data_hot",
"data_hangat",
"pengambilan",
"tuan",
"remote_cluster_client",
"Ubah"
],
"atribut":
"logical_availability_zone": "zon-0",
"server_name": "contoh-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"ketersediaan_zon": "us-west-1c",
"xpack.dipasang ":" true ",
"instance_configuration": "aws.data.highio.i3 ",
"ubah.simpul ":" benar ",
"wilayah": "kita-barat-1"
,
"tetapan":
"s3":
"pelanggan":
"elastik-dalaman-22e0be":
"endpoint": "s3-us-barat-1.amazonaws.com "


,
--------------------------------output dipotong---------------------

Secara lalai, semua node Elasticsearch membolehkan penyerapan dan mampu mengendalikan operasi penyerapan. Walau bagaimanapun, untuk operasi penyerapan yang berat, anda boleh membuat satu nod yang dikhaskan untuk pengambilan sahaja.

Untuk menangani proses pra_, sebelum mengindeks dokumen, kita perlu menentukan saluran paip yang menyatakan siri praprosesor.

Praprosesor adalah set arahan yang dililit pada saluran paip dan dilaksanakan satu demi satu.

Berikut ini adalah sintaks umum bagaimana menentukan saluran paip:


"description": "Tukarkan saya",
"pemproses": [
"tukar":
"bidang": "id",
"type": "integer"
]

Properti keterangan menyatakan apa yang harus dicapai oleh saluran paip. Parameter seterusnya adalah preprocessor, diteruskan sebagai senarai mengikut urutan pelaksanaannya.

Buat Talian Paip

Untuk membuat saluran paip yang akan kami gunakan untuk mengubah jenis, gunakan permintaan PUT dengan titik akhir API _ingest sebagai:

PUT _ingest / saluran paip / tukar_paip

"Deskripsi": "menukar medan dayOfWeek medan menjadi panjang dari bilangan bulat",
"pemproses": [

"tukar":
"bidang": "dayOfWeek",
"type": "panjang"


]

Untuk cURL, gunakan arahan:

curl -XPUT "http: // localhost: 9200 / _ingest / pipeline / convert_pipeline" -H 'Content-Type: application / json' -d '"description": "menukar medan dayOfWeek menjadi panjang dari bilangan bulat", " pemproses ": [" convert ": " field ":" dayOfWeek "," type ":" long "] '

Reindex dan Tukar Jenis

Sebaik sahaja kita mempunyai saluran pipa di node penyerapan, yang perlu kita lakukan adalah memanggil API pengindeksan dan meneruskan saluran pipa sebagai argumen di tujuan badan permintaan sebagai:

POST _reindex

"Sumber":
"index": "kibana_sample_data_flights"
,
"dest":
"index": "kibana_sample_type_diff",
"saluran paip": "convert_pipeline"

Untuk CURL:

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

 Sahkan Penukaran

Untuk mengesahkan bahawa saluran paip telah diterapkan dengan betul, gunakan permintaan GET untuk mengambil bidang tertentu sebagai:

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

Ini harus mengembalikan data sebagai:

-----------------------INDEKS ASAL---------------------------

"kibana_sample_data_flights":
"pemetaan":
"hari dalam seminggu" :
"nama_ penuh": "dayOfWeek",
"pemetaan":
"hari dalam seminggu" :
"type": "integer"






-------------------------DATA YANG DITETAPKAN-------------------------------

"kibana_sample_type_diff":
"pemetaan":
"hari dalam seminggu" :
"nama_ penuh": "dayOfWeek",
"pemetaan":
"hari dalam seminggu" :
"type": "panjang"





Kesimpulannya

Dalam panduan ini, kami telah melihat bagaimana untuk bekerja dengan Elasticsearch Ingest node untuk memproses dokumen sebelum mengindeks, sehingga mengubah medan dari satu jenis ke jenis lain.

Pertimbangkan dokumentasi untuk mengetahui lebih lanjut.

https: // www.elastik.co / guide / en / elasticsearch / rujukan / master / pengambilan.html

5 Permainan Arcade Terbaik untuk Linux
Pada masa kini, komputer adalah mesin serius yang digunakan untuk permainan. Sekiranya anda tidak dapat memperoleh skor tinggi baru, anda akan tahu ma...
Battle For Wesnoth 1.13.6 Pembangunan Dikeluarkan
Battle For Wesnoth 1.13.6 dilancarkan bulan lalu, adalah rilis pengembangan keenam di 1.13.siri x dan memberikan sejumlah penambahbaikan, terutamanya ...
Cara Memasang League Of Legends di Ubuntu 14.04
Sekiranya anda peminat League of Legends, maka ini adalah peluang bagi anda untuk menguji menjalankan League of Legends. Perhatikan bahawa LOL disokon...