Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 7839|Jawab: 0

Pemilihan mesin pencari: Elasticsearch vs Solr

[Salin tautan]
Diposting pada 11/12/2018 13.42.36 | | | |
Dokumen penelitian pemilihan mesin pencari

Pengantar Elasticsearch*


Elasticsearch adalah mesin pencarian dan analitik terdistribusi secara real-time. Ini membantu Anda memproses data berskala besar lebih cepat dari sebelumnya.

Ini dapat digunakan untuk pencarian teks lengkap, pencarian terstruktur, dan analitik, dan tentu saja, Anda dapat menggabungkan ketiganya.

Elasticsearch adalah mesin pencari yang dibangun di atas mesin pencari teks lengkap Apache Lucene™, yang dapat dikatakan sebagai kerangka mesin pencari open source berfitur lengkap paling canggih dan efisien yang tersedia saat ini.

Tetapi Lucene hanyalah kerangka kerja, dan untuk memanfaatkan fitur-fiturnya sepenuhnya, Anda perlu menggunakan JAVA dan mengintegrasikan Lucene ke dalam program Anda. Dibutuhkan banyak pembelajaran untuk memahami cara kerjanya, dan Lucene sangat rumit.

Elasticsearch menggunakan Lucene sebagai mesin internalnya, tetapi saat menggunakannya untuk pencarian teks lengkap, Anda hanya perlu menggunakan API terpadu tanpa memahami prinsip operasi Lucene yang kompleks di baliknya.

Tentu saja, Elasticsearch tidak sesederhana Lucene, tidak hanya menyertakan fungsi pencarian teks lengkap, tetapi juga dapat melakukan tugas-tugas berikut:

  • Penyimpanan file real-time terdistribusi dan pengindeksan setiap bidang sehingga dapat dicari.
  • Mesin pencari terdistribusi dengan analitik real-time.
  • Ini dapat menskalakan ke ratusan server untuk menangani petabyte data terstruktur atau tidak terstruktur.

Dengan begitu banyak fitur yang terintegrasi ke dalam satu server, Anda dapat dengan mudah berkomunikasi dengan RESTful API ES melalui klien atau bahasa pemrograman pilihan Anda.

Memulai dengan Elasticsearch sangat sederhana. Muncul dengan banyak default yang sangat masuk akal, yang menjadikannya cara yang baik bagi pemula untuk menghindari keharusan berurusan dengan teori yang rumit segera setelah mereka memulai.

Itu terpasang dan siap digunakan, dan bisa sangat produktif dengan biaya pembelajaran yang kecil.

Saat Anda mempelajari lebih lanjut, Anda juga dapat memanfaatkan fitur Elasticsearch yang lebih canggih, dan seluruh mesin dapat dikonfigurasi secara fleksibel. Anda dapat menyesuaikan Elasticsearch Anda sendiri sesuai dengan kebutuhan Anda sendiri.

Kasus Penggunaan:

  • Wikipedia menggunakan Elasticsearch untuk melakukan pencarian teks lengkap dan menyorot kata kunci, serta saran pencarian seperti pencarian-sebagai-Anda-ketik dan apakah Anda bermaksud.
  • The Guardian menggunakan Elasticsearch untuk memproses log pengunjung sehingga editor dapat diberitahu tentang reaksi publik terhadap artikel yang berbeda secara real time.
  • StackOverflow menggabungkan pencarian teks lengkap dengan geolokasi dan informasi yang relevan untuk memberikan representasi pertanyaan yang terkait dengan lebih banyak seperti ini.
  • GitHub menggunakan Elasticsearch untuk mengambil lebih dari 130 miliar baris kode.
  • Setiap hari, Goldman Sachs menggunakannya untuk mengindeks data 5TB, dan banyak bank investasi menggunakannya untuk menganalisis pergerakan pasar saham.

Tetapi Elasticsearch bukan hanya untuk perusahaan besar, tetapi juga telah membantu banyak startup seperti DataDog dan Klout memperluas kemampuan mereka.

Pro dan kontra dari Elasticsearch**:

Merit

  • Elasticsearch didistribusikan. Tidak ada komponen lain yang diperlukan, dan distribusi secara real-time, yang dikenal sebagai "Push replication".
  • Elasticsearch sepenuhnya mendukung pencarian hampir real-time dengan Apache Lucene.
  • Penanganan multitenancy tidak memerlukan konfigurasi khusus, sedangkan Solr memerlukan pengaturan yang lebih canggih.
  • Elasticsearch menggunakan konsep Gateway untuk membuatnya lebih mudah untuk mencadangkan.
  • Setiap node membentuk struktur jaringan yang sama, dan ketika beberapa node gagal, node lain secara otomatis ditugaskan untuk bekerja di tempatnya.


Kekurangan

  • Hanya satu pengembang (organisasi Elasticsearch GitHub saat ini lebih dari itu, sudah memiliki pengelola yang cukup aktif)
  • Tidak cukup otomatis (tidak cocok untuk API Pemanasan Indeks baru saat ini)


Tentang Solr*

Solr (diucapkan "solar") adalah platform pencarian perusahaan sumber terbuka untuk proyek Apache Lucene. Fitur utamanya meliputi pencarian teks lengkap, penandaan klik, pencarian segi, pengelompokan dinamis, integrasi basis data, dan pemrosesan teks kaya (misalnya, Word, PDF). Solr sangat dapat diskalakan dan menyediakan pencarian terdistribusi dan replikasi indeks. Solr adalah mesin pencari tingkat perusahaan paling populer, dan Solr4 juga menambahkan dukungan NoSQL.

Solr adalah server pencarian teks lengkap mandiri yang ditulis dalam Java yang berjalan pada wadah servlet seperti Apache Tomcat atau Jetty. Solr menggunakan pustaka pencarian Java Lucene sebagai inti untuk pengindeksan dan pencarian teks lengkap, dan memiliki API HTTP/XML dan JSON seperti REST. Kemampuan konfigurasi eksternal Solr yang kuat memudahkan untuk beradaptasi dengan banyak jenis aplikasi tanpa pengkodean Java. Solr memiliki arsitektur plugin untuk mendukung penyesuaian yang lebih canggih.

Karena penggabungan proyek Apache Lucene dan Apache Solr pada tahun 2010, kedua proyek tersebut dibuat dan diimplementasikan oleh tim pengembangan Apache Software Foundation yang sama. Dalam hal teknologi atau produk, Lucene/Solr atau Solr/Lucene adalah sama.

Pro dan kontra dari Solr:

Merit

  • Solr memiliki komunitas pengguna, pengembang, dan kontributor yang lebih besar dan lebih matang.
  • Mendukung penambahan indeks dalam berbagai format, seperti HTML, PDF, format perangkat lunak Microsoft Office, dan format teks biasa seperti JSON, XML, CSV, dll.
  • Solr relatif dewasa dan stabil.
  • Cari saat pengindeksan tidak dipertimbangkan, dan kecepatannya lebih cepat.


Kekurangan

  • Saat indeks dibuat, efisiensi pencarian menurun, dan efisiensi pencarian indeks real-time tidak tinggi.


Elasticsearch vs Solr*

Solr lebih cepat saat hanya mencari data yang ada.




Saat mengindeks secara real time, Solr akan menyebabkan pemblokiran IO dan kinerja kueri yang buruk, yang mana Elasticsearch memiliki keunggulan yang jelas.



Seiring dengan meningkatnya jumlah data, efisiensi pencarian Solr menjadi lebih rendah, sementara Elasticsearch tidak berubah secara signifikan.



Singkatnya, arsitektur Solr tidak cocok untuk aplikasi pencarian real-time.

Pengujian produksi dunia nyata*

Gambar di bawah ini menunjukkan peningkatan 50x lipat dalam kecepatan kueri rata-rata setelah beralih dari Solr ke Elasticsearch.




Ringkasan perbandingan Elasticsearch vs Solr

  • Keduanya mudah dipasang;
  • Solr memanfaatkan Zookeeper untuk manajemen terdistribusi, sementara Elasticsearch sendiri memiliki manajemen orkestrasi terdistribusi;
  • Solr mendukung lebih banyak format data, sedangkan Elasticsearch hanya mendukung format file JSON;
  • Solr secara resmi menyediakan lebih banyak fitur, sedangkan Elasticsearch sendiri lebih berfokus pada fungsi inti, dan fungsi lanjutan sebagian besar disediakan oleh plugin pihak ketiga.
  • Solr mengungguli Elasticsearch dalam aplikasi pencarian tradisional, tetapi secara signifikan kurang efisien daripada Elasticsearch saat menangani aplikasi pencarian real-time.
  • Solr adalah solusi yang kuat untuk aplikasi pencarian tradisional, tetapi Elasticsearch lebih cocok untuk aplikasi pencarian real-time yang muncul.


Solusi mesin pencari open source berbasis Lucene lainnya*


1: Gunakan Lucene secara langsung

Catatan: Lucene adalah perpustakaan pencarian JAVA yang bukan solusi lengkap dengan sendirinya dan memerlukan upaya pengembangan tambahan.

Keuntungan: Solusi matang dengan banyak kasus yang berhasil. Proyek tingkat atas Apache yang terus berkembang pesat. Komunitas pengembangan yang besar dan aktif, sejumlah besar pengembang. Ini hanya perpustakaan kelas, dengan ruang yang cukup untuk penyesuaian dan pengoptimalan: setelah penyesuaian sederhana, itu dapat memenuhi kebutuhan paling umum; Dioptimalkan untuk mendukung 1 miliar+ pencarian.

Kekurangan: Membutuhkan upaya pengembangan tambahan. Semua penskalaan, distribusi, keandalan, dll. perlu diterapkan sendiri; Dalam non-real-time, ada penundaan waktu antara pengindeksan dan pencarian, dan skalabilitas skema pencarian "Lucene Near Real Time" saat ini perlu ditingkatkan lebih lanjut

Login hyperlink terlihat.

2: Katta

Catatan: Dukungan berbasis Lucene terdistribusi, dapat diskalakan, toleran terhadap kesalahan, skema pencarian hampir real-time.

Kelebihan: Didistribusikan di luar kotak dengan Hadoop. Ini memiliki mekanisme penskalaan dan toleransi kesalahan.

Kekurangan: Ini hanya solusi pencarian, dan Anda masih perlu menerapkan bagian pengindeksan sendiri. Dalam hal fungsi pencarian, hanya kebutuhan paling dasar yang terwujud. Ada lebih sedikit kisah sukses dan kematangan proyek sedikit lebih rendah. Karena perlu mendukung distribusi, akan sulit untuk menyesuaikan beberapa persyaratan kueri yang kompleks.

Login hyperlink terlihat.

3:Hadoop kontrib/indeks

Catatan: Mode Peta/Reduksi, solusi pengindeksan terdistribusi, dapat digunakan dengan Katta.

Keuntungan: Pengindeksan dan skalabilitas terdistribusi.

Kekurangan: Hanya skema pengindeksan, bukan implementasi pencarian. Bekerja dalam mode batch dengan dukungan yang buruk untuk pencarian real-time.

Login hyperlink terlihat.

4: Solusi sumber terbuka LinkedIn

Deskripsi: Berbagai solusi berdasarkan Lucene, termasuk Zoie untuk pencarian hampir real-time, Bobo untuk pencarian aspek, Decomposer untuk algoritma pembelajaran mesin, Krati untuk repositori peringkasan, Sensei untuk pembungkus skema database, dan banyak lagi

Keuntungan: Solusi terbukti yang mendukung implementasi fitur terdistribusi, dapat diskalakan, dan kaya

Kekurangan: Terlalu erat hubungannya dengan perusahaan LinkedIn dan kemampuan penyesuaian yang buruk

Login hyperlink terlihat.

5: Lucandra

Catatan: Berdasarkan Lucene, indeks ada di database cassandra

Kelebihan: Lihat keunggulan Cassandra

Kekurangan: Mengacu pada kerugian Cassandra. Juga, ini hanya demo dan belum diverifikasi secara ketat

Login hyperlink terlihat.

6: HBasene

Catatan: Berdasarkan Lucene, indeks ada di database HBase

Manfaat: Lihat keunggulan HBase

Kekurangan: Lihat kerugian HBase. Selain itu, dalam implementasi, istilah lucene disimpan sebagai baris, tetapi daftar posting yang sesuai dengan setiap istilah disimpan sebagai kolom. Seiring bertambahnya jumlah daftar posting untuk satu istilah, kecepatan kueri akan sangat terpengaruh


Login hyperlink terlihat.

7: Xunsearch

Catatan: Xunsearch mengadopsi desain hierarkis terstruktur, termasuk layanan back-end dan paket pengembangan front-end, dengan hierarki yang jelas dan tidak ada persimpangan. Backend adalah daemon yang ditulis dalam C/C++, sedangkan frontend menggunakan PHP, bahasa skrip paling populer, yang lebih nyaman untuk proyek pencarian web. Untuk detailnya, lihat Desain Arsitektur.

Login hyperlink terlihat.






Mantan:Kit Pengembangan PHP EOS Blockchain
Depan:Tutorial Instalasi Java JDK Centos 7
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com