ฉันจะพยายามอธิบายด้วยตัวอย่างจริงเนื่องจากคำตอบและคำตอบที่คุณได้รับดูเหมือนจะไม่ช่วยคุณ
เมื่อคุณดาวน์โหลด elasticsearch และเริ่มต้นขึ้นคุณจะสร้างโหนด elasticsearch ซึ่งพยายามเข้าร่วมคลัสเตอร์ที่มีอยู่หากมีหรือสร้างขึ้นใหม่ สมมติว่าคุณสร้างคลัสเตอร์ใหม่ของคุณเองด้วยโหนดเดียวโหนดที่คุณเพิ่งเริ่มต้น เราไม่มีข้อมูลดังนั้นเราต้องสร้างดัชนี
เมื่อคุณสร้างดัชนี (ดัชนีจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อคุณจัดทำดัชนีเอกสารแรกเช่นกัน) คุณสามารถกำหนดได้ว่าจะประกอบไปด้วยจำนวนใด หากคุณไม่ระบุหมายเลขจะมีจำนวนเศษเริ่มต้น: 5 รายการ มันหมายความว่าอะไร?
มันหมายความว่า ElasticSearch จะสร้าง 5 เศษหลักที่จะมีข้อมูลของคุณ:
____ ____ ____ ____ ____
| 1 | | 2 | | 3 | | 4 | | 5 |
|____| |____| |____| |____| |____|
ทุกครั้งที่คุณทำดัชนีเอกสาร ElasticSearch จะตัดสินใจว่าเอกสารหลักที่ควรเก็บเอกสารนั้นและจะทำดัชนีที่นั่น เศษหลักไม่ใช่สำเนาของข้อมูล แต่เป็นข้อมูล! การมีหลายเศษจะช่วยให้ได้ประโยชน์จากการประมวลผลแบบขนานบนเครื่องเดียว แต่ประเด็นทั้งหมดก็คือถ้าเราเริ่มต้นการค้นหาด้วยอีลาสติกอื่นในคลัสเตอร์เดียวกันชิ้นส่วนจะถูกกระจายอย่างสม่ำเสมอ
โหนด 1 จะเก็บตัวอย่างไว้เพียงสามชิ้นเท่านั้น:
____ ____ ____
| 1 | | 2 | | 3 |
|____| |____| |____|
เนื่องจากเศษสองส่วนที่เหลือถูกย้ายไปยังโหนดเริ่มต้นใหม่:
____ ____
| 4 | | 5 |
|____| |____|
ทำไมสิ่งนี้ถึงเกิดขึ้น เนื่องจาก elasticsearch เป็นเครื่องมือค้นหาแบบกระจายและด้วยวิธีนี้คุณสามารถใช้ประโยชน์จากหลาย ๆ โหนด / เครื่องเพื่อจัดการข้อมูลจำนวนมาก
ดัชนีการค้นพบทั้งหมดของอีเล็คทรอนิคส์ประกอบด้วยอย่างน้อยหนึ่งชิ้นส่วนหลักเนื่องจากเป็นที่เก็บข้อมูล เศษทุกชิ้นมีค่าใช้จ่ายดังนั้นหากคุณมีโหนดเดียวและไม่มีการเติบโตที่คาดการณ์ได้เพียงติดกับเศษชิ้นส่วนหลักเดียว
Shard อีกประเภทหนึ่งคือแบบจำลอง ค่าเริ่มต้นคือ 1 หมายถึงทุกชิ้นส่วนหลักจะถูกคัดลอกไปยังส่วนอื่นที่จะมีข้อมูลเดียวกัน แบบจำลองถูกใช้เพื่อเพิ่มประสิทธิภาพการค้นหาและล้มเหลว แบบจำลองจะไม่ถูกจัดสรรบนโหนดเดียวกันซึ่งเป็นส่วนหลักที่เกี่ยวข้อง (มันค่อนข้างจะเหมือนกับการสำรองข้อมูลลงในดิสก์เดียวกันกับข้อมูลต้นฉบับ)
กลับไปที่ตัวอย่างของเราด้วย 1 แบบจำลองเราจะมีดัชนีทั้งหมดในแต่ละโหนดเนื่องจาก 2 ชิ้นส่วนของแบบจำลองจะได้รับการจัดสรรในโหนดแรกและพวกเขาจะมีข้อมูลเช่นเดียวกับเศษหลักในโหนดที่สอง:
____ ____ ____ ____ ____
| 1 | | 2 | | 3 | | 4R | | 5R |
|____| |____| |____| |____| |____|
เหมือนกันสำหรับโหนดที่สองซึ่งจะมีสำเนาของเศษหลักในโหนดแรก:
____ ____ ____ ____ ____
| 1R | | 2R | | 3R | | 4 | | 5 |
|____| |____| |____| |____| |____|
ด้วยการตั้งค่าเช่นนี้หากโหนดล่มคุณยังคงมีดัชนีทั้งหมด เรพลิกาเศษจะกลายเป็นอุปกรณ์อัตโนมัติและคลัสเตอร์จะทำงานอย่างถูกต้องแม้โหนดล้มเหลวดังต่อไปนี้:
____ ____ ____ ____ ____
| 1 | | 2 | | 3 | | 4 | | 5 |
|____| |____| |____| |____| |____|
เนื่องจากคุณมี"number_of_replicas":1
แบบจำลองไม่สามารถกำหนดได้อีกต่อไปเนื่องจากไม่มีการจัดสรรบนโหนดเดียวกันกับที่เป็นแหล่งข้อมูลหลัก นั่นเป็นเหตุผลที่คุณจะมี 5 เศษยังไม่ได้มอบหมายเลียนแบบและสถานะคลัสเตอร์จะแทนYELLOW
GREEN
ไม่มีการสูญหายของข้อมูล แต่อาจดีกว่าเนื่องจากไม่สามารถกำหนดเศษบางส่วนได้
ทันทีที่โหนดที่เหลือถูกสำรองข้อมูลมันจะเข้าร่วมคลัสเตอร์อีกครั้งและแบบจำลองจะถูกกำหนดอีกครั้ง สามารถโหลดชิ้นส่วนที่มีอยู่บนโหนดที่สองได้ แต่ต้องทำการซิงโครไนซ์กับส่วนอื่นเนื่องจากการดำเนินการเขียนส่วนใหญ่เกิดขึ้นขณะที่โหนดหยุดทำงาน GREEN
ในตอนท้ายของการดำเนินการนี้สถานะคลัสเตอร์จะกลายเป็น
หวังว่านี่จะอธิบายสิ่งต่าง ๆ ให้คุณ