ในโพสต์นี้ ฉันจะพูดถึงชื่อแทนของ Elasticsearch® เพื่อเฉลิมฉลองการเข้าถึงการดำเนินการนามแฝงของเราใน Curatorimplementation ที่โฮสต์โดย ObjectRocket ฉันยังตรวจสอบข้อดีของนามแฝงของ Elasticsearch และวิธีใช้งาน
แนะนำการใช้นามแฝงใน Elasticsearch
เผยแพร่ครั้งแรกเมื่อวันที่ 24 สิงหาคม 2017 ที่ ObjectRocket.com/blog
กลยุทธ์ที่ดีเพื่อสุขอนามัยที่ดีของ Elasticsearch คือการหลีกเลี่ยงดัชนีขนาดใหญ่ที่มีข้อมูลจำนวนมาก อย่างไรก็ตาม หลังจากที่ข้อมูลของคุณกระจายไปทั่วดัชนีต่างๆ คุณอาจต้องการวิธีที่ดีที่สุดในการค้นหาจากดัชนีเหล่านี้ นั่นคือที่มาของชื่อแทน
นามแฝงใน Elasticsearch นั้นตรงกับชื่อจริงๆ:ชื่อรองที่สามารถใช้เพื่ออ้างถึงดัชนี หรือดัชนีหลายตัว ซึ่งอาจรวมถึงการกรองบางส่วนเพื่อรองรับความต้องการของคุณ ในโพสต์นี้ ฉันต้องการจะแนะนำวิธีเจ๋งๆ ในการใช้นามแฝงและขั้นตอนในการใช้คุณลักษณะของเรา ช่วยให้คุณตั้งค่างาน Alias Curator สำหรับคลัสเตอร์ Object Rocket Elasticsearch ได้อย่างรวดเร็วและง่ายดาย
CRUD (สร้าง อ่าน อัปเดต และลบ) ด้วยนามแฝง
มาดูตัวอย่างง่ายๆ เกี่ยวกับวิธีการทำงานของนามแฝง คุณสามารถแสดงรายการนามแฝงโดยใช้ _cat
API ซึ่งส่งคืนบรรทัดสำหรับการเชื่อมโยงดัชนีนามแฝงแต่ละรายการ และใช้การกรองหรือการกำหนดเส้นทางหรือไม่:
GET _cat/aliases?v
alias index filter routing.index routing.search
atest test1 – – –
atest test2 – – –
atest2 test2 * – –
หรือคุณสามารถใช้ /_alias
ปลายทางเพื่อดูนามแฝงทั้งหมดหรือ /index/_alias
ปลายทางเพื่อดูนามแฝงสำหรับดัชนีนั้น คุณยังสามารถเพิ่มนามแฝงให้กับดัชนีในระหว่างการสร้างโดยใช้เทมเพลตดัชนีหรือใช้PUT
คำสั่ง:
PUT /test2
{
“aliases” : {
“atest” : {},
“atest2” : {
“filter” : {
“term” : {“user” : “objectrocket” }
}
}
}
}
จากนั้น เพิ่มหรือแก้ไขในภายหลังด้วย /_aliases
ปลายทางโดยการระบุดัชนีและนามแฝงที่จะเพิ่มหรือลบ
POST /_aliases
{
“actions” : [
{ “add” : { “index” : “test1”, “alias” : “atest” } },
{ “remove” : { “index” : “test3”, “alias” : “atest” } }
] }
จากที่นั่น คุณสามารถใช้ชื่อนามแฝงแทนชื่อดัชนีในแบบสอบถามได้ โปรดทราบว่าคุณสามารถจัดทำดัชนีเอกสารไปยังนามแฝงที่ชี้ไปยังดัชนีเดียวเท่านั้น เห็นได้ชัดว่ามีนามแฝงที่ลึกซึ้งมากขึ้นที่คุณสามารถรับได้จากเอกสารอย่างเป็นทางการ แต่สิ่งนี้จะทำให้คุณรู้สึกคุ้นเคยกับการทำงานกับนามแฝง
เรื่องใหญ่คืออะไร
ทั้งหมดนี้ดูเรียบง่าย และคุณอาจถูกขายไปแล้ว แต่ในกรณีที่คุณไม่มี ต่อไปนี้คือสถานที่สองสามแห่งที่ชื่อแทนช่วยได้จริงๆ
สร้างดัชนีใหม่โดยไม่มีการหยุดทำงาน
หนึ่งในคุณสมบัติที่มีประโยชน์ที่สุดใน Elasticsearch คือ สร้างดัชนีใหม่ เอพีไอ อย่างไรก็ตาม หลังจากสร้างดัชนีใหม่ คุณยังต้องจัดการการตัดยอดจากดัชนีเก่าเป็นดัชนีใหม่ นามแฝงช่วยให้คุณทำการตัดส่วนนี้ได้โดยไม่ต้องหยุดทำงาน วิธีการ:
-
สมมติว่าคุณมีดัชนีชื่อ
oldIndex
และต้องการสร้างดัชนีใหม่เป็นnewIndex
. -
สร้างนามแฝง
myalias
และเพิ่มลงในoldIndex
. -
ตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณชี้ไปที่
myalias
แทนที่จะเป็นoldIndex
. -
สร้าง
newIndex
. ของคุณ และเริ่มสร้างดัชนีข้อมูลจากoldIndex
เข้าไป -
เพิ่ม
newIndex
ถึงmyalias
และลบoldIndex
. ทำสิ่งนี้ในคำสั่งเดียว การเปลี่ยนแปลงนี้เป็นแบบปรมาณู (เล็กมากและเป็นรายบุคคล) ดังนั้นจะไม่มีปัญหาระหว่างการเปลี่ยนแปลง -
ตรวจสอบว่าคุณได้รับผลลัพธ์ที่คาดหวังจากนามแฝง จากนั้นคุณสามารถลบ
oldIndex
เมื่อคุณพร้อม
เป็นการดีที่จะใช้นามแฝงสำหรับการอ่านหรือสอบถามจากแอปพลิเคชันของคุณเพื่อหลีกเลี่ยงขั้นตอนที่ไม่จำเป็น
จับช่วงของดัชนีตามเวลา
หากคุณกำลังใช้ Logstash® หรือ Beats® คุณอาจคุ้นเคยกับดัชนีชื่อ something-yyyy.mm.dd
. ทำให้การจัดการและการจัดการข้อมูลเป็นเรื่องง่าย สัญลักษณ์ตัวแทนและรายการดัชนีไม่ได้ยืดหยุ่นเท่าที่คุณต้องการเสมอไป โดยเฉพาะอย่างยิ่งเมื่อคุณต้องการค้นหาในช่วงวันที่ต่างๆ นามแฝงช่วยให้คุณมีวิธีแก้ปัญหาที่ง่ายสำหรับกรณีดังกล่าว สมมติว่าคุณมีดัชนีบันทึกรายการบันทึกประจำวันและคุณเก็บบันทึกของคุณไว้เป็นเวลา 30 วัน อย่างไรก็ตาม คุณอาจต้องดูเฉพาะช่วงเจ็ดวันที่ผ่านมาสำหรับคำค้นหาบางประเภท ด้วยการใช้นามแฝงและภัณฑารักษ์ คุณสามารถทำสิ่งนี้ได้ค่อนข้างง่าย
-
สร้างนามแฝงที่คล้ายกับตัวอย่างนี้:
lastSevenDays
. -
ตั้งค่าเทมเพลตดัชนีของคุณเพื่อเพิ่มดัชนีไปยังนามแฝงใหม่ตามค่าเริ่มต้น
-
การใช้ ผู้แนะนำ Elasticsearch ด้วยการดำเนินการนามแฝงและตัวกรองอายุ/รูปแบบ หรือสคริปต์พื้นฐาน ให้ตั้งค่างานที่เกิดซ้ำเพื่อลบดัชนีที่เก่ากว่าเจ็ดวัน
-
จากนั้น ค้นหาทั้งหมดไปยัง
lastSevenDays
ตีเฉพาะดัชนีที่สร้างขึ้นในช่วงเจ็ดวันที่ผ่านมา
ตัวอย่างลูกค้า
ฉันต้องการปิดตัวอย่างเล็กๆ จากลูกค้าของเรา ลูกค้ารายนี้มีปัญหาบางอย่างเกี่ยวกับความช้า หลังจากตรวจทาน เราสังเกตเห็นว่าคำถามทั่วไปข้อหนึ่งของพวกเขาคือการค้นหาในช่วงวันที่ทั้งหมดของคลัสเตอร์ แบบสอบถามนี้คล้ายกับสถานการณ์ที่แสดงไว้ก่อนหน้านี้มาก และต้องการข้อมูลเพียงเจ็ดวันที่ผ่านมาเท่านั้น ดังนั้นจึงเป็นตัวเลือกที่สมบูรณ์แบบสำหรับการจัดการด้วยนามแฝงที่ได้รับการอัปเดตเป็นประจำเพื่อชี้ไปที่ดัชนีจากเจ็ดวันที่ผ่านมา ในกราฟต่อไปนี้ คุณจะเห็นว่าผลกระทบต่อประสิทธิภาพของคลัสเตอร์นั้นน่าทึ่งมาก:
เนื่องจากมีการสอบถามนามแฝงนี้บ่อยครั้ง เราจึงเห็นผลกระทบที่การเปลี่ยนแปลงนี้มี กราฟเหล่านี้แสดงให้เราเห็นว่าการใช้งาน CPU ลดลงมากกว่า 50% ในโหนดทั้งหมด จำนวนการถอนแคชของแบบสอบถามลดลง ~75% แม้ว่าผลลัพธ์ที่คุณเห็นอาจไม่รุนแรงนัก ทั้งนี้ขึ้นอยู่กับความถี่ของการค้นหาและขนาดดัชนี ผลลัพธ์ดังกล่าวแสดงให้เห็นว่าการจัดการขอบเขตการค้นหาและดัชนีของคุณอย่างเหมาะสมมีความสำคัญเพียงใด
สรุป
นามแฝงเป็นอีกหนึ่งเครื่องมือในกล่องเครื่องมือ Elasticsearch ที่จะช่วยให้จัดการและทำงานกับคลัสเตอร์ได้ง่ายขึ้นในแต่ละวัน โพสต์นี้ไม่ละเอียดถี่ถ้วน แต่ควรให้แนวคิดว่าคุณสามารถใช้นามแฝงใน Elasticsearchimplementation ได้ที่ไหนและอย่างไร
คุณจะตั้งค่างาน Alias Curator ผ่าน ObjectRocket ได้อย่างไร
แม้ว่าคลัสเตอร์ Elasticsearch ของเรารองรับนามแฝงอยู่แล้ว แต่คุณสมบัติงาน Alias Curator ใหม่ทำให้ง่ายต่อการตั้งค่าการบำรุงรักษานามแฝงเป็นประจำ โดยทำให้คุณสามารถระบุตัวกรองเพื่อเพิ่มหรือลบดัชนีจากนามแฝงในช่วงเวลาปกติตามเกณฑ์ของคุณ
เพื่อแสดงสิ่งนี้ ลองใช้ lastSevenDays
ตัวอย่างนามแฝง ซึ่งมีการอ้างอิงอยู่แล้วโดยใช้ Elasticsearch Curator เพื่อให้สิ่งนี้เรียบง่าย เราปล่อยให้งานผู้แนะนำที่รันครั้งแรกตั้งค่านามแฝงสำหรับเรา คุณสามารถอ้างอิงนามแฝงที่มีอยู่ในงานภัณฑารักษ์ ซึ่งทำให้คุณสามารถตั้งค่านามแฝงแยกกัน หากคุณต้องการมีการตั้งค่าแบบกำหนดเองเพิ่มเติม
ในการจัดการนามแฝงนี้ คุณควรทำให้เป็นปัจจุบันโดยมีเพียงดัชนีที่ตรงกับเกณฑ์อายุที่จะสร้างภายในเจ็ดวันที่ผ่านมา เริ่มต้นที่หน้ารายละเอียดอินสแตนซ์สำหรับคลัสเตอร์ที่เราต้องการเพิ่มงาน Alias Curator สำหรับ:
ตอนนี้ เลือก ภัณฑารักษ์ แท็บเพื่อดูงานผู้ดูแลปัจจุบัน:
อย่างที่คุณเห็น เรามีงานภัณฑารักษ์สองสามงานอยู่แล้ว มาสร้างกันอีกครั้ง—คราวนี้กับงาน Alias Curator ในการดำเนินการนี้ ให้เลือก เพิ่มงาน :
ตอนนี้ คุณสามารถเลือก นามแฝง ประเภทงาน:
หลังจากตั้งชื่องานแล้ว เราต้องระบุชื่อนามแฝง มาใช้ lastSevenDays
. กันเถอะ สำหรับตัวอย่างนี้ คุณยังสามารถดูตัวเลือกสองสามอย่าง:เพิ่ม และ ลบ . สิ่งเหล่านี้ทำให้คุณสามารถระบุตัวกรองสำหรับดัชนีที่คุณต้องการเพิ่มหรือลบออกจากนามแฝง สำหรับ lastSevenDays
เราจะเพิ่มดัชนีบางรายการและลบรายการอื่นๆ เลยเลือกทั้งสองอย่าง:
ตัวกรองที่ต้องการจะเพิ่มดัชนีทั้งหมดที่ใหม่กว่าเจ็ดวันและลบดัชนีที่เก่ากว่าเจ็ดวัน หลังจากที่คุณกรอกข้อมูล ดัชนีจะคล้ายกับตัวอย่างต่อไปนี้:
เราสามารถปล่อยให้เป็นช่วงเริ่มต้น (ทุก ๆ ห้านาที) เพื่อระบุว่าเราต้องการให้งานนี้ทำงานเป็นประจำเพื่อให้นามแฝงของเราทันสมัยอยู่เสมอ เลือก บันทึกงาน และนั่นแหล่ะ! ตอนนี้งานจะทำงานทุก ๆ ห้านาทีเพื่อให้ ElasticsearchAlias อัปเดตอยู่เสมอ
เรียนรู้เพิ่มเติมเกี่ยวกับ Rackspace DBA Services
ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถคลิกแชทขาย เพื่อแชทตอนนี้และเริ่มการสนทนา