Pencarian skala. Pencarian Elastics Kelebihan dan persyaratan dasar untuk instalasi

Selamat sore. Nama saya Roman Larchikov, saya seorang insinyur dukungan teknis di Docsvision. Artikel ini telah disiapkan bagi mereka yang tertarik dengan detail teknis dari penerapan penskalaan pencarian dan keakraban dengan karya Elasticsearch. Artikel ini akan berbicara tentang alasan untuk menggunakan ES, persyaratan sistem, serta keuntungan dibandingkan pencarian dari MS SQL Server.

Jika Anda tertarik pada istilah yang lebih umum untuk mempelajari tentang bagaimana kami meningkatkan pencarian di versi terbaru dari platform kami, kolega saya memberi tahu tentang hal ini di webinar β€œ Docsvision ECM. Cari Penelusuran Penskalaan Elastis . "

Mengapa Pencarian Elastics?


gambar

Untuk memulainya, perlu dicatat bahwa versi platform Docsvision 5.5 pada dasarnya berbeda dari yang sebelumnya dalam arsitektur modular. Dalam hal ini, kami perlu memastikan kemungkinan penskalaan sistem yang hampir tidak terbatas sambil mempertahankan kecepatan kerja. Secara khusus, diperlukan untuk dapat skala layanan pengindeksan pada kecepatan tinggi operasinya.

Dalam hal ini, versi Docsvision 5.5 memperkenalkan kemungkinan menggunakan basis data eksternal (satelit). Sekarang tidak perlu menyimpan semua data dalam satu basis data, yang selama pekerjaan intensif tumbuh setiap hari dalam volume, yang mempersulit proses perbaikan basis data, kecepatan pemulihannya jika jatuh, dan umumnya memperlambat basis data itu sendiri.

gambar

Menggunakan satu database untuk semuanya buruk. Kemampuan untuk mentransfer data untuk memisahkan basis data eksternal yang diterapkan di Docsvision 5.5 memungkinkan Anda untuk merestrukturisasi basis data dengan benar. Jadi, jika kita berbicara tentang pencarian, data indeks dapat disimpan sudah di luar basis data utama, menghilangkan efek pada ukurannya.

Kemudahan penyesuaian, fleksibilitas, keandalan, skalabilitas, kecepatan pengindeksan dan pencarian online semuanya tentang Elasticsearch.

Elasticsearch sangat berorientasi pada dokumen. Setelah pengindeksan, kita dapat mencari, mengurutkan, memfilter data, daripada baris data dalam kolom. Yang, pada gilirannya, menunjukkan pendekatan berbeda untuk pengambilan data, dan menunjukkan bahwa Elasticsearch dapat melakukan pencarian teks lengkap yang kompleks.

Dokumen direpresentasikan sebagai objek JSON. Pada saat yang sama, serialisasi (proses menerjemahkan struktur data apa pun ke dalam urutan bit) JSON didukung oleh sebagian besar bahasa pemrograman dan sudah menjadi format standar untuk NoSQL.

1. Memperkenalkan Elasticsearch


1.1. Apa itu?


Elasticsearch adalah mesin pencari teks lengkap open source yang dapat diskalakan menggunakan perpustakaan Lucene dan ditulis dalam Java. Deskripsi semua keunggulan mesin ini tersedia di situs web resmi .

Ini dimaksudkan untuk pencarian kompleks dalam database dokumen / file. Dalam database Elasticsearch, tabel disebut indeks, dan proses memuat dokumen disebut indeks.

Ini dapat dianggap sebagai repositori dokumen non-relasional dalam format JSON dan mesin pencari berdasarkan pencarian teks lengkap Lucene. Klien resmi tersedia dalam Java, NET (C #), Python, Groovy, JavaScript, PHP, Perl, Ruby.

ES sedang dikembangkan oleh Elastic, bersama dengan proyek-proyek terkait yang disebut Elastic Stack - Elasticsearch, Logstash, Beats, dan Kibana.

Elasticsearch bertanggung jawab untuk menyimpan dan mencari data (selanjutnya, untuk singkatnya, kami akan menyebutnya ES).

1.2. Keuntungan dari Mesin Pencari Elasticsearch Dibandingkan dengan Mesin Pencari MS SQL


Docsvision 5.5 memiliki pilihan mesin pencari mana untuk bekerja. Pada artikel ini saya akan fokus pada penggunaan mesin pencari Elasticsearch dan berbicara tentang kelebihannya daripada pencarian dari MS SQL Server.

Keuntungan utama:

  • Kemampuan layanan pengindeksan untuk mengakses penyimpanan data eksternal. Pada saat yang sama, data diindeks dengan benar dan ditampilkan dengan benar selama pencarian. Saat menggunakan mesin pencari SQL Server, dimungkinkan untuk mencari hanya dengan data yang disimpan dalam database utama.
  • ES adalah proyek open source, dan banyak perusahaan global menggunakannya untuk mencari set data yang sangat besar.
  • ES , , .
  • (). ES, SQL Server .
  • ES β€” , .
  • ES (, , ), .
  • , , , .
  • ES . .
  • . , , , , , .
  • , , , , .
  • ES ( ). Docsvision, ES , SQL .
  • β€” SQL. , , , . , .. , . , , .. . ES .
  • Basis data tidak bertambah besar saat menambahkan bahasa. Tidak seperti ES, saat menggunakan pencarian teks lengkap dalam MS SQL, data yang diindeks meningkatkan ukuran basis data utama, terutama jika pengindeksan dikonfigurasi dalam bahasa yang berbeda, misalnya, Rusia / netral / Inggris. Dalam hal ini, pertumbuhan tabel pengindeksan telah meningkat beberapa kali, jika hanya satu bahasa untuk pengindeksan yang dipilih, misalnya, netral.

2. Persyaratan perangkat lunak dan sistem yang diperlukan untuk menginstal Elasticsearch


ES dapat digunakan tidak hanya pada server berkinerja tinggi, tetapi juga pada laptop. Tetapi jika kita berbicara tentang lingkungan yang produktif, maka Anda harus menggunakan server terpisah dan mematuhi beberapa rekomendasi yang patut dipertimbangkan.

2.1. RAM


Sumber daya paling kritis untuk ES adalah RAM. Ini adalah sumber daya utama yang kemungkinan besar akan berakhir lebih dulu. Ukuran minimum yang diijinkan adalah 8Gb, yang direkomendasikan adalah dari 16 hingga 64 Gb. Lebih banyak diizinkan jika memang ada kebutuhan.

gambar

Penyortiran dan agregasi dapat menggunakan memori dalam jumlah besar, sehingga penting untuk memiliki persediaan yang cukup. Mesin dengan RAM 64 GB adalah solusi yang ideal, tetapi mesin dengan 32 GB dan 16 GB juga umum. Jika 8 GB atau kurang diinstal pada mesin, ini dapat menyebabkan hasil yang berlawanan (pada akhirnya, Anda mungkin memerlukan beberapa mesin "kecil" seperti itu). Menggunakan lebih dari 64 GB juga memiliki karakteristik tersendiri.

2.2. CPU


ES, sebagai suatu peraturan, tidak memiliki banyak persyaratan prosesor, sehingga pilihannya kurang penting daripada sumber daya lainnya.

gambar

Tetapi Anda harus mematuhi aturan. Anda harus memilih prosesor modern dengan beberapa core. Biasanya, server dalam sebuah cluster menggunakan mesin dua hingga delapan inti.

Jika Anda memiliki pilihan antara prosesor lebih cepat atau prosesor dengan banyak inti, Anda harus memilih yang terakhir. Paralelisme tambahan yang ditawarkan oleh beberapa core akan memberikan hasil yang lebih besar daripada frekuensi clock yang sedikit lebih tinggi.

2.3. Disk


Disk juga merupakan sumber daya penting untuk pengoperasian ES yang cepat. Penting ketika menggunakan cluster dan dua kali lipat penting untuk cluster dengan volume besar data yang diindeks.

Disk adalah subsistem paling lambat di server, yang berarti bahwa cluster dengan perekaman intensif dapat menempatkan beban tinggi pada disk, yang, pada gilirannya, menjadi penghambat server. Jika mungkin untuk menggunakan solid-state drive, maka perlu menggunakannya, karena mereka jauh lebih unggul dari semua media yang berputar. Host dengan dukungan SSD memiliki peningkatan yang nyata dalam kinerja permintaan dan pengindeksan.

gambar

Jika Anda bermaksud menggunakan hard disk (HDD), maka disarankan untuk menggunakan disk server berkinerja tinggi (disk dengan kecepatan spindel 15.000 rpm).

Menggunakan RAID 0 adalah cara yang efektif untuk meningkatkan kecepatan disk untuk disk pemintalan dan SSD. Tidak perlu menggunakan opsi RAID dengan mirroring atau parity, karena ketersediaan tinggi dibangun ke dalam ES melalui replika.

2.4. Penjadwal I / O


Jika Anda menggunakan solid state drive, Anda harus memastikan bahwa penjadwal I / O sistem operasi dikonfigurasikan dengan benar. Ketika data sedang ditulis ke disk, penjadwal I / O memutuskan kapan data tersebut benar-benar dikirim ke disk. Dalam kebanyakan kasus, penjadwal cfq default digunakan (antrian yang sepenuhnya jujur).

Penjadwal ini mengalokasikan slot waktu untuk setiap proses dan kemudian mengoptimalkan pengiriman berbagai antrian ke disk. Ini dioptimalkan untuk bekerja dengan HDD: sifat pelat yang berputar berarti lebih efisien untuk menulis data ke disk tergantung pada lokasi fisik.

Namun, ini tidak efektif untuk solid state drive, karena mereka tidak menggunakan pelat yang berputar. Sebaliknya, gunakan tenggat waktu atau noop. Penjadwal tenggat waktu mengoptimalkan tergantung pada berapa lama rekaman telah menunggu, sementara noop hanyalah antrian FIFO sederhana.

Perubahan sederhana ini dapat secara signifikan meningkatkan throughput penulisan dengan penjadwal yang tepat.

2.5. Jaringan


Jaringan yang cepat dan andal penting untuk kinerja dalam sistem terdistribusi. Latensi rendah memastikan bahwa node dapat dengan mudah bertukar data, sementara throughput tinggi membantu memindahkan dan memulihkan data.

Jaringan pusat data modern (1 GbE, 10 GbE) cukup untuk sebagian besar cluster.

Cluster yang merentang beberapa pusat data harus dihindari, bahkan jika pusat data terletak sangat dekat. Jelas menghindari cluster yang menjangkau jarak geografis yang besar.

Cluster ES mengasumsikan bahwa semua node sama. Penundaan yang lama cenderung memperburuk masalah dalam sistem terdistribusi dan membuat debugging dan resolusi menjadi sulit.

2.6. Rekomendasi umum


Sebaiknya berikan preferensi pada mesin "sedang" dan "besar", menghindari mesin berkinerja rendah untuk menghilangkan biaya hanya memulai ES. Pada saat yang sama, mesin yang sangat besar harus dihindari: mereka sering menyebabkan penggunaan sumber daya yang tidak seimbang (misalnya, semua memori digunakan, tetapi bukan prosesor pusat) dan dapat menambah kompleksitas logistik jika diperlukan untuk menjalankan beberapa node pada mesin.

3. Kesimpulan


Setelah kami mengetahui apa itu Elasticsearch, keuntungan utama dan persyaratan instalasi, kami dapat melanjutkan dengan instalasi ES itu sendiri untuk konfigurasi lebih lanjut di Docsvision.

Tentang cara menginstalnya dan melakukan konfigurasi, serta memeriksa pengindeksan, yaitu. kapasitas kerja di Docsvision, baca publikasi rekan saya di sini .

Topik yang menarik? Maka Anda dapat menggunakan tautan ini dan mencari tahu lebih banyak lagi! Dan di sini Anda dapat mendaftar untuk kursus.

All Articles