อะไรคือความแตกต่างระหว่าง Lucene และ Elasticsearch


151

ฉันรู้ว่า ElasticSearch สร้างขึ้นจาก Apache Lucene แต่ฉันต้องการทราบความแตกต่างที่สำคัญระหว่างทั้งสอง

คำตอบ:


239

Lucene เป็นJava ห้องสมุด คุณสามารถรวมไว้ในโครงการของคุณและอ้างถึงฟังก์ชันโดยใช้การเรียกฟังก์ชัน

ElasticSearch เป็นJSONตาม, กระจาย , เว็บเซิร์ฟเวอร์สร้างขึ้นเมื่อกว่า Lucene แม้ว่า Lucene จะทำงานจริงอยู่ข้างใต้ แต่ Elasticsearch ก็มีเลเยอร์ที่สะดวกสบายเหนือ Lucene แต่ละชาร์ดที่สร้างขึ้นใน Elasticsearch เป็นอินสแตนซ์ Lucene ที่แยกจากกัน เพื่อสรุป

  1. Elasticsearch สร้างขึ้นบน Lucene และจัดเตรียมREST API ที่ใช้ JSONเพื่ออ้างถึงคุณสมบัติของ Lucene
  2. ElasticSearch ยังมีระบบกระจายอยู่ด้านบนของ Lucene ระบบแบบกระจายไม่ใช่สิ่งที่ Lucene ตระหนักหรือสร้างขึ้นเพื่อ Elasticsearch จัดเตรียมสิ่งที่เป็นนามธรรมของโครงสร้างแบบกระจาย
  3. Elasticsearch มีคุณสมบัติสนับสนุนอื่น ๆ เช่นเธรดพูลคิว API การตรวจสอบโหนด / คลัสเตอร์ API การตรวจสอบข้อมูลการจัดการคลัสเตอร์เป็นต้น

1
มีความแตกต่างระหว่างทั้งสองอย่างเกี่ยวกับ DataStore หรือไม่?
AlikElzin-kilaka

แล้วที่เก็บข้อมูลล่ะ?
Rookian

11
ไม่แน่ใจว่าสิ่งนี้จะตอบคำถามของคุณเกี่ยวกับ DataStore หรือไม่ แต่ Elasticsearch Node แต่ละโหนดมี Shards ดัชนี Elasticsearch เดียวจะกระจายไปตามโหนดโดยใช้ Shards ชาร์ดแต่ละชิ้นมีเอกสารบางส่วนในดัชนี Elasticsearch เศษแต่ละชิ้นเหล่านี้เป็นตัวอย่างของ Lucene ดังนั้นที่รากข้อมูลทั้งหมดจะถูกเก็บไว้ใน Lucene และ Elasticsearch จะจัดการการโต้ตอบ
Airn5475

35

นอกจากคำพูดของ@Vineeth Mohan :

ความพร้อมใช้งานสูง:มีการแจกจ่าย Elasticsearch เพื่อให้สามารถจัดการการจำลองข้อมูลซึ่งหมายถึงการมีสำเนาข้อมูลหลายชุดในคลัสเตอร์ของคุณ สิ่งนี้ช่วยให้มีความพร้อมใช้งานสูง

DSL แบบสอบถามที่มีประสิทธิภาพ : Elasticsearch เสนออินเทอร์เฟซ JSON สำหรับการอ่านและเขียนข้อความค้นหาที่อยู่ด้านบนของ Lucene ขอบคุณ Elasticsearch คุณสามารถเขียนคำค้นหาที่ซับซ้อนได้โดยไม่ต้องรู้ไวยากรณ์ของ Lucene

Schemaless (Schema-Free): Fields (ชื่อคู่ค่า) สำหรับschemaไม่ต้องกำหนดมาก่อน เมื่อคุณทำดัชนีข้อมูล elasticsearch สามารถสร้างสคีมาโดยอัตโนมัติที่รันไทม์เช่นเดียวกับเวทมนตร์


1

ฉันจะตอบจากมุมมองการใช้งาน

Lucene เป็นเครื่องมือค้นหาที่ห้องสมุด คุณต้องการใช้เพื่อสร้างเครื่องมือค้นหาของคุณเองไม่ว่าจะเป็นคู่แข่งใหม่ของ Elasticsearch หรือ Solr หรือสิ่งที่แคบสำหรับกรณีการใช้งานของคุณ (เช่นการวิเคราะห์ข้อความ)

ElasticSearch เป็นเครื่องมือค้นหา คนส่วนใหญ่ใช้สำหรับการรวมบันทึกการค้นหาผลิตภัณฑ์หรือรูปแบบของสองสิ่งนี้ (เช่นการวิเคราะห์โซเชียลมีเดียหรือค้นหาผู้ที่เกี่ยวข้องสำหรับเกณฑ์การค้นหาบางอย่าง) มันสร้างขึ้นบน Lucene ดังนั้นจึงหมายความว่าส่วนใหญ่ ( แต่ไม่ทั้งหมด) ของคุณลักษณะของมัน นอกจากนี้ยังเพิ่มจำนวนมากที่สำคัญที่สุด:

  • REST API
  • แบบสอบถาม DSL
  • ระบบกระจาย (การจัดเรียงการจำลองการจัดการคลัสเตอร์)
  • แง่มุม / การรวม
  • คุณสมบัติเพิ่มเติมสำหรับการใช้งานทั่วไป (เช่นเข้าไปในร่างกายในการประมวลผล) และการจัดการ (APIs สำหรับการตรวจสอบของตัวชี้วัดที่เกี่ยวข้อง , การสำรองข้อมูลและเรียกคืน ฯลฯ )

0

ฉันจะเพิ่มอีกมุมหนึ่งในการสนทนา

ดัชนี Elasticsearch Vs ดัชนี Lucene

ดัชนี ElasticSearchเป็นก้อนของเอกสารเช่นเดียวกับฐานข้อมูลประกอบด้วยตารางในโลกสัมพันธ์
เพื่อให้บรรลุการปรับขนาดเราได้กระจายดัชนี Elasticsearch ไปยังโหนด / เซิร์ฟเวอร์ทางกายภาพหลายตัว

สำหรับการที่เราทำลาย ElasticSearch ดัชนีเป็นหน่วยขนาดเล็กซึ่งเรียกว่าเศษ

คำถาม: เกี่ยวข้องกับ Lucene index อย่างไร?
หากเราต้องการค้นหาคำที่เฉพาะเจาะจง (ตัวอย่างเช่น: " เค้ก " หรือ " คุกกี้ ") เราจะต้องไปดูแต่ละชาร์ดและมองหามัน (ให้แยกวิธีการระบุตำแหน่งของเศษและการจำลองในแต่ละโหนด)

การดำเนินการนี้จะใช้เวลามากดังนั้นเราจึงต้องใช้โครงสร้างข้อมูลที่มีประสิทธิภาพสำหรับการค้นหานี้ซึ่งเป็นจุดที่ดัชนีของ Luceneเข้ามามีบทบาท

ชิ้นส่วนของElasticsearchแต่ละชิ้นจะขึ้นอยู่กับโครงสร้างดัชนี Luceneและจัดเก็บสถิติเกี่ยวกับคำศัพท์เพื่อให้การค้นหาตามคำมีประสิทธิภาพมากขึ้น

(!) สิ่งนี้ค่อนข้างสับสนเนื่องจากคำว่า "ดัชนี" และความจริงที่ว่าชิ้นส่วนของ Elasticsearch เป็นส่วนหนึ่งของดัชนี Elasticsearch แต่ขึ้นอยู่กับโครงสร้างข้อมูลของดัชนี Lucene


โบนัส - ดัชนีของ Lucene เป็นดัชนีกลับหัว

ดังที่เห็นได้จากตัวอย่างด้านล่างดัชนีของ Lucene จะจัดเก็บเนื้อหาของเอกสารต้นฉบับพร้อมข้อมูลเพิ่มเติมเช่นพจนานุกรมคำศัพท์และความถี่ของคำซึ่งเพิ่มประสิทธิภาพในการค้นหา:

Term           Document                 Frequency
Cake           doc_id_1, doc_id_8       4 (2 in doc_id_1, 2 in doc_id_8)
Cookie         doc_id_1, doc_id_6       3 (2 in doc_id_1, 1 in doc_id_6)
Spaghetti      doc_id_12                1 (1 in doc_id_12)

ดัชนีของ Lucene อยู่ในกลุ่มดัชนีที่เรียกว่าดัชนีกลับหัว เนื่องจากสามารถแสดงรายการเอกสารที่มีคำศัพท์ได้
นี่คือค่าผกผันของความสัมพันธ์ตามธรรมชาติซึ่งเอกสารแสดงรายการเงื่อนไข


(คำเตือน) เรามาถึงจาก Shard ถึงเทอมได้อย่างไร?

(1) Shard เป็นไดเร็กทอรีของไฟล์ที่มีเอกสาร
(2) เอกสารคือลำดับของฟิลด์
(3) ฟิลด์คือลำดับของคำที่มีชื่อ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.