Apa perbedaan antara Lucene dan Elasticsearch

139

Saya tahu ElasticSearch dibangun di atas Apache Lucene tetapi saya ingin tahu perbedaan yang signifikan antara keduanya.

Satish Madiwal
sumber

Jawaban:

217

Lucene adalah perpustakaan Java . Anda dapat memasukkannya dalam proyek Anda dan merujuk fungsinya menggunakan panggilan fungsi.

Elasticsearch adalah server web Berbasis JSON , Terdistribusi , yang dibangun di atas Lucene. Meskipun Lucene yang melakukan pekerjaan aktual di bawahnya, Elasticsearch memberi kita lapisan yang nyaman di atas Lucene. Setiap pecahan yang dibuat di Elasticsearch adalah instance Lucene yang terpisah. Jadi untuk meringkas

  1. Elasticsearch dibangun di atas Lucene dan menyediakan REST API berbasis JSON untuk merujuk ke fitur Lucene.
  2. Elasticsearch menyediakan sistem terdistribusi di atas Lucene . Sistem terdistribusi bukanlah sesuatu yang Lucene sadari atau bangun. Elasticsearch menyediakan abstraksi struktur terdistribusi ini.
  3. Elasticsearch menyediakan fitur pendukung lainnya seperti thread-pool, antrian, API pemantauan simpul / klaster, API pemantauan data, manajemen Cluster, dll.
Vineeth Mohan
sumber
1
Apakah ada perbedaan antara keduanya terkait DataStore?
AlikElzin-kilaka
Bagaimana dengan penyimpanan data?
Rookian
10
Tidak yakin apakah ini menjawab pertanyaan Anda dengan keras DataStore, tetapi setiap Elasticsearch Node berisi Pecahan. Indeks Elasticsearch tunggal tersebar di Nodes menggunakan Shards. Setiap Shard memegang sebagian dokumen dalam Indeks Elasticsearch. Masing-masing pecahan ini adalah turunan dari Lucene. Jadi pada dasarnya, semua data disimpan di Lucene dan Elasticsearch mengelola interaksi.
Airn5475
32

Selain kata-kata @Vineeth Mohan :

Ketersediaan Tinggi: Elasticsearch didistribusikan, sehingga dapat mengelola replikasi data, yang berarti memiliki banyak salinan data di cluster Anda. Ini memungkinkan ketersediaan tinggi.

DSL Powerfull Query : Elasticsearch menawarkan antarmuka JSON untuk membaca dan menulis kueri di atas Lucene. Berkat Elasticsearch, Anda dapat menulis kueri kompleks tanpa mengetahui sintaks Lucene.

Schemaless (Bebas Skema): Fields (nama, pasangan nilai) untuk schematidak harus didefinisikan sebelumnya. Saat Anda mengindeks data, elasticsearch dapat membuat skema secara otomatis saat runtime, seperti sulap.

fgul
sumber
0

Saya akan menjawab dari perspektif penggunaan.

Lucene adalah perpustakaan mesin pencari . Anda ingin menggunakannya untuk membangun mesin pencari Anda sendiri: baik Elasticsearch atau pesaing Solr baru atau sesuatu yang sempit untuk kasus penggunaan Anda (mis. Analisis teks).

Elasticsearch adalah mesin pencari . Kebanyakan orang menggunakannya untuk agregasi log, pencarian produk, atau varian dari keduanya (mis. Analisis media sosial atau menemukan orang yang relevan untuk beberapa kriteria pencarian). Itu dibangun di atas Lucene, sehingga memperlihatkan sebagian besar (walaupun tidak semua) fitur-fiturnya . Itu juga menambahkan banyak di atas, paling signifikan:

  • API SISA
  • permintaan DSL
  • sistem terdistribusi (sharding, replikasi, manajemen cluster)
  • segi / agregasi
  • fitur tambahan untuk penggunaan umum (mis. pemrosesan ingest ) dan manajemen (API untuk memantau metrik yang relevan , pencadangan dan pengembalian, dll.)
Radu Gheorghe
sumber