Pencarian elastis

Praktik Terbaik Elasticsearch dan Peningkatan Kinerja

Praktik Terbaik Elasticsearch dan Peningkatan Kinerja
Dalam posting ini, kami akan mencoba mengumpulkan praktik terbaik dan juga hal-hal apa yang harus dihindari saat bekerja dengan Elasticsearch dan memasukkan data ke dalamnya. Dengan cara ini, kita akan mengetahui semua hal yang perlu kita perhatikan bahkan sebelum kita mulai bekerja dengan Mesin Pencari yang luar biasa ini.

Praktik Terbaik Elasticsearch

Kami akan mulai bekerja dengan Praktik Terbaik untuk diikuti dengan Elasticsearch dan masalah apa yang dapat ditimbulkannya ketika kami menghindari poin-poin ini. Mari kita mulai.

Selalu tentukan Pemetaan ES

Satu hal yang pasti bisa dilakukan ES adalah, bekerja tanpa pemetaan. Jadi, ketika Anda mulai memasukkan data JSON ke indeks ES Anda, itu akan beralih ke bidang data dan membuat pemetaan yang sesuai. Ini tampaknya langsung dan mudah karena ES memilih tipe data itu sendiri. Berdasarkan data Anda, Anda mungkin memerlukan bidang dengan tipe data tertentu.

Misalnya, Anda mengindeks dokumen berikut:


"id" : 1,
"title" : "Instal ElasticSearch di Ubuntu",
"tautan" : "https://linuxhint.com/install-elasticsearch-ubuntu/",
"tanggal" : "25-03-2018"

Dengan cara ini, Elasticsearch akan menandai bidang "tanggal" sebagai jenis "tanggal". Tetapi ketika Anda mengindeks dokumen berikut:


"id" : 1,
"title" : "Praktik dan Performa Terbaik ES",
"tanggal" : "Tertunda"

Kali ini, jenis bidang tanggal telah diubah dan ES akan membuat kesalahan dan tidak mengizinkan dokumen Anda diindeks. Untuk mempermudah, Anda dapat mengindeks beberapa dokumen, lihat bidang apa yang diindeks oleh ES dan ambil pemetaan dari URL ini:

DAPATKAN /index_name/doc_type/_mapping

Dengan cara ini, Anda tidak perlu membuat pemetaan lengkap juga.

Bendera Produksi

Nama cluster default yang dimulai ES disebut pencarian elastis. Saat Anda memiliki banyak node di kluster Anda, sebaiknya jaga agar flag penamaan sekonsisten mungkin, seperti:

gugus.nama: app_es_production
simpul.nama: app_es_node_001

Terlepas dari ini, pengaturan pemulihan untuk node juga sangat penting. Misalkan beberapa node dalam cluster restart karena kegagalan dan beberapa node restart sedikit setelah node lain. Untuk menjaga agar data tetap konsisten di antara semua node ini, kita harus menjalankan program konsistensi yang akan menjaga semua cluster dalam keadaan yang konsisten.

pintu gerbang.recovery_after_nodes: 10

Ini juga membantu ketika Anda memberi tahu cluster sebelumnya berapa banyak node yang akan ada di cluster dan berapa banyak waktu pemulihan yang dibutuhkan ini:

pintu gerbang.diharapkan_nodes: 20
pintu gerbang.pulih_setelah_waktu: 7m

Dengan konfigurasi yang benar, pemulihan yang akan memakan waktu berjam-jam dapat memakan waktu hanya satu menit dan dapat menghemat banyak uang untuk perusahaan mana pun.

Penyediaan Kapasitas

Penting untuk mengetahui berapa banyak ruang yang akan diambil data Anda dan kecepatan alirannya ke Elasticsearch, karena itu akan menentukan jumlah RAM yang Anda perlukan pada setiap node cluster dan node master juga.

Tentu saja, tidak ada pedoman khusus untuk mencapai jumlah yang dibutuhkan, tetapi kami dapat mengambil beberapa langkah yang memberi kami ide bagus. Salah satu langkahnya adalah simulasikan kasus penggunaan. Buat klaster ES dan beri makan dengan kecepatan data yang hampir sama seperti yang Anda harapkan dengan penyiapan produksi Anda. Konsep dari mulai besar dan kecilkan juga dapat membantu Anda konsisten tentang berapa banyak ruang yang dibutuhkan.

Template Besar

Saat Anda menentukan template besar yang diindeks, Anda akan selalu menghadapi masalah terkait dengan sinkronisasi template di berbagai node cluster Anda. Selalu perhatikan bahwa template harus didefinisikan ulang setiap kali terjadi perubahan model data. Ini adalah ide yang jauh lebih baik untuk menjaga template tetap dinamis. Template Dinamis secara otomatis memperbarui pemetaan bidang berdasarkan pemetaan yang kami tentukan sebelumnya dan bidang baru. Perhatikan bahwa tidak ada pengganti untuk menjaga template sekecil mungkin.

2Menggunakan mlockall di Server Ubuntu

Linux memanfaatkan proses Swapping ketika membutuhkan memori untuk halaman baru. Bertukar membuat segalanya menjadi lambat karena disk lebih lambat dari memori. Itu mlockall properti dalam konfigurasi ES memberi tahu ES untuk tidak menukar halamannya dari memori bahkan jika itu tidak diperlukan untuk saat ini. Properti ini dapat diatur dalam file YAML:

bootstrap.mlockall: benar

Di ES v5.versi x+, properti ini telah berubah menjadi:

bootstrap.memory_lock: benar

Jika Anda menggunakan properti ini, pastikan Anda memberi ES memori tumpukan yang cukup besar menggunakanES -DXmx pilihan atau ES_HEAP_SIZE.

Minimalkan Pembaruan Pemetaan

Performa kluster sedikit terpengaruh setiap kali Anda membuat permintaan pembaruan pemetaan di kluster ES Anda. Jika Anda tidak dapat mengontrol ini dan masih ingin memperbarui pemetaan, Anda dapat menggunakan properti di file konfigurasi ES YAML:

indeks.gugus.send_refresh_mapping: salah

Ketika permintaan pembaruan model dalam antrian tertunda untuk node master dan mengirimkan data dengan pemetaan lama ke node, itu juga harus mengirim permintaan pembaruan nanti ke semua node. Ini bisa membuat segalanya menjadi lambat. Saat kami menyetel properti di atas ke false, ini sangat masuk akal bahwa pembaruan telah dilakukan pada pemetaan dan tidak akan mengirim permintaan pembaruan ke node. Perhatikan bahwa ini hanya membantu jika Anda membuat banyak perubahan pada pemetaan Anda secara teratur.

Kumpulan Thread yang Dioptimalkan

Node ES memiliki banyak kumpulan utas untuk meningkatkan cara utas dikelola dalam sebuah node. Tetapi ada batasan berapa banyak data yang dapat ditangani oleh setiap utas. Untuk melacak nilai ini, kita dapat menggunakan properti ES:

kumpulan benang.jumlah besar.antrian_ukuran: 2000

Ini memberi tahu ES jumlah permintaan dalam pecahan yang dapat diantrekan untuk dieksekusi di node ketika tidak ada utas yang tersedia untuk memproses permintaan. Jika jumlah tugas lebih tinggi dari nilai ini, Anda akan mendapatkan Pengecualian Transportasi Jarak Jauh. Semakin tinggi nilai ini, semakin tinggi jumlah heap-space yang dibutuhkan pada mesin node Anda dan heap JVM akan dikonsumsi juga. Juga, Anda harus menyiapkan kode Anda jika pengecualian ini dilemparkan.

Kesimpulan

Dalam pelajaran ini, kita melihat bagaimana kita dapat meningkatkan kinerja Elasticsearch dengan menghindari kesalahan umum dan tidak terlalu umum yang dilakukan orang. Baca lebih banyak artikel Elasticsearch di LinuxHint.

Cara Mengembangkan Game di Linux
Satu dekade yang lalu, tidak banyak pengguna Linux yang memprediksi bahwa sistem operasi favorit mereka suatu hari nanti akan menjadi platform game po...
Port Sumber Terbuka dari Mesin Game Komersial
Rekreasi mesin game gratis, open source, dan lintas platform dapat digunakan untuk bermain lama serta beberapa judul game yang cukup baru. Artikel ini...
Game Baris Perintah Terbaik untuk Linux
Baris perintah bukan hanya sekutu terbesar Anda saat menggunakan Linux-ini juga dapat menjadi sumber hiburan karena Anda dapat menggunakannya untuk me...