Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

นามแฝง Elasticsearch

ในโพสต์นี้ ฉันจะพูดถึงชื่อแทนของ Elasticsearch® เพื่อเฉลิมฉลองการเข้าถึงการดำเนินการนามแฝงของเราใน Curatorimplementation ที่โฮสต์โดย ObjectRocket ฉันยังตรวจสอบข้อดีของนามแฝงของ Elasticsearch และวิธีใช้งาน

แนะนำการใช้นามแฝงใน Elasticsearch

เผยแพร่ครั้งแรกเมื่อวันที่ 24 สิงหาคม 2017 ที่ ObjectRocket.com/blog

นามแฝง Elasticsearch

กลยุทธ์ที่ดีเพื่อสุขอนามัยที่ดีของ 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 คือ สร้างดัชนีใหม่ เอพีไอ อย่างไรก็ตาม หลังจากสร้างดัชนีใหม่ คุณยังต้องจัดการการตัดยอดจากดัชนีเก่าเป็นดัชนีใหม่ นามแฝงช่วยให้คุณทำการตัดส่วนนี้ได้โดยไม่ต้องหยุดทำงาน วิธีการ:

  1. สมมติว่าคุณมีดัชนีชื่อ oldIndex และต้องการสร้างดัชนีใหม่เป็น newIndex .

  2. สร้างนามแฝง myalias และเพิ่มลงใน oldIndex .

  3. ตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณชี้ไปที่ myalias แทนที่จะเป็น oldIndex .

  4. สร้าง newIndex . ของคุณ และเริ่มสร้างดัชนีข้อมูลจาก oldIndex เข้าไป

  5. เพิ่ม newIndex ถึง myalias และลบ oldIndex . ทำสิ่งนี้ในคำสั่งเดียว การเปลี่ยนแปลงนี้เป็นแบบปรมาณู (เล็กมากและเป็นรายบุคคล) ดังนั้นจะไม่มีปัญหาระหว่างการเปลี่ยนแปลง

  6. ตรวจสอบว่าคุณได้รับผลลัพธ์ที่คาดหวังจากนามแฝง จากนั้นคุณสามารถลบ oldIndex เมื่อคุณพร้อม

เป็นการดีที่จะใช้นามแฝงสำหรับการอ่านหรือสอบถามจากแอปพลิเคชันของคุณเพื่อหลีกเลี่ยงขั้นตอนที่ไม่จำเป็น

จับช่วงของดัชนีตามเวลา

หากคุณกำลังใช้ Logstash® หรือ Beats® คุณอาจคุ้นเคยกับดัชนีชื่อ something-yyyy.mm.dd . ทำให้การจัดการและการจัดการข้อมูลเป็นเรื่องง่าย สัญลักษณ์ตัวแทนและรายการดัชนีไม่ได้ยืดหยุ่นเท่าที่คุณต้องการเสมอไป โดยเฉพาะอย่างยิ่งเมื่อคุณต้องการค้นหาในช่วงวันที่ต่างๆ นามแฝงช่วยให้คุณมีวิธีแก้ปัญหาที่ง่ายสำหรับกรณีดังกล่าว สมมติว่าคุณมีดัชนีบันทึกรายการบันทึกประจำวันและคุณเก็บบันทึกของคุณไว้เป็นเวลา 30 วัน อย่างไรก็ตาม คุณอาจต้องดูเฉพาะช่วงเจ็ดวันที่ผ่านมาสำหรับคำค้นหาบางประเภท ด้วยการใช้นามแฝงและภัณฑารักษ์ คุณสามารถทำสิ่งนี้ได้ค่อนข้างง่าย

  1. สร้างนามแฝงที่คล้ายกับตัวอย่างนี้:lastSevenDays .

  2. ตั้งค่าเทมเพลตดัชนีของคุณเพื่อเพิ่มดัชนีไปยังนามแฝงใหม่ตามค่าเริ่มต้น

  3. การใช้ ผู้แนะนำ Elasticsearch ด้วยการดำเนินการนามแฝงและตัวกรองอายุ/รูปแบบ หรือสคริปต์พื้นฐาน ให้ตั้งค่างานที่เกิดซ้ำเพื่อลบดัชนีที่เก่ากว่าเจ็ดวัน

  4. จากนั้น ค้นหาทั้งหมดไปยัง lastSevenDays ตีเฉพาะดัชนีที่สร้างขึ้นในช่วงเจ็ดวันที่ผ่านมา

ตัวอย่างลูกค้า

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

นามแฝง Elasticsearch นามแฝง Elasticsearch

เนื่องจากมีการสอบถามนามแฝงนี้บ่อยครั้ง เราจึงเห็นผลกระทบที่การเปลี่ยนแปลงนี้มี กราฟเหล่านี้แสดงให้เราเห็นว่าการใช้งาน CPU ลดลงมากกว่า 50% ในโหนดทั้งหมด จำนวนการถอนแคชของแบบสอบถามลดลง ~75% แม้ว่าผลลัพธ์ที่คุณเห็นอาจไม่รุนแรงนัก ทั้งนี้ขึ้นอยู่กับความถี่ของการค้นหาและขนาดดัชนี ผลลัพธ์ดังกล่าวแสดงให้เห็นว่าการจัดการขอบเขตการค้นหาและดัชนีของคุณอย่างเหมาะสมมีความสำคัญเพียงใด

สรุป

นามแฝงเป็นอีกหนึ่งเครื่องมือในกล่องเครื่องมือ Elasticsearch ที่จะช่วยให้จัดการและทำงานกับคลัสเตอร์ได้ง่ายขึ้นในแต่ละวัน โพสต์นี้ไม่ละเอียดถี่ถ้วน แต่ควรให้แนวคิดว่าคุณสามารถใช้นามแฝงใน Elasticsearchimplementation ได้ที่ไหนและอย่างไร

คุณจะตั้งค่างาน Alias ​​Curator ผ่าน ObjectRocket ได้อย่างไร

แม้ว่าคลัสเตอร์ Elasticsearch ของเรารองรับนามแฝงอยู่แล้ว แต่คุณสมบัติงาน Alias ​​Curator ใหม่ทำให้ง่ายต่อการตั้งค่าการบำรุงรักษานามแฝงเป็นประจำ โดยทำให้คุณสามารถระบุตัวกรองเพื่อเพิ่มหรือลบดัชนีจากนามแฝงในช่วงเวลาปกติตามเกณฑ์ของคุณ

เพื่อแสดงสิ่งนี้ ลองใช้ lastSevenDays ตัวอย่างนามแฝง ซึ่งมีการอ้างอิงอยู่แล้วโดยใช้ Elasticsearch Curator เพื่อให้สิ่งนี้เรียบง่าย เราปล่อยให้งานผู้แนะนำที่รันครั้งแรกตั้งค่านามแฝงสำหรับเรา คุณสามารถอ้างอิงนามแฝงที่มีอยู่ในงานภัณฑารักษ์ ซึ่งทำให้คุณสามารถตั้งค่านามแฝงแยกกัน หากคุณต้องการมีการตั้งค่าแบบกำหนดเองเพิ่มเติม

ในการจัดการนามแฝงนี้ คุณควรทำให้เป็นปัจจุบันโดยมีเพียงดัชนีที่ตรงกับเกณฑ์อายุที่จะสร้างภายในเจ็ดวันที่ผ่านมา เริ่มต้นที่หน้ารายละเอียดอินสแตนซ์สำหรับคลัสเตอร์ที่เราต้องการเพิ่มงาน Alias ​​Curator สำหรับ:

นามแฝง Elasticsearch

ตอนนี้ เลือก ภัณฑารักษ์ แท็บเพื่อดูงานผู้ดูแลปัจจุบัน:

นามแฝง Elasticsearch

อย่างที่คุณเห็น เรามีงานภัณฑารักษ์สองสามงานอยู่แล้ว มาสร้างกันอีกครั้ง—คราวนี้กับงาน Alias ​​Curator ในการดำเนินการนี้ ให้เลือก เพิ่มงาน :

นามแฝง Elasticsearch

ตอนนี้ คุณสามารถเลือก นามแฝง ประเภทงาน:

นามแฝง Elasticsearch

หลังจากตั้งชื่องานแล้ว เราต้องระบุชื่อนามแฝง มาใช้ lastSevenDays . กันเถอะ สำหรับตัวอย่างนี้ คุณยังสามารถดูตัวเลือกสองสามอย่าง:เพิ่ม และ ลบ . สิ่งเหล่านี้ทำให้คุณสามารถระบุตัวกรองสำหรับดัชนีที่คุณต้องการเพิ่มหรือลบออกจากนามแฝง สำหรับ lastSevenDays เราจะเพิ่มดัชนีบางรายการและลบรายการอื่นๆ เลยเลือกทั้งสองอย่าง:

นามแฝง Elasticsearch

ตัวกรองที่ต้องการจะเพิ่มดัชนีทั้งหมดที่ใหม่กว่าเจ็ดวันและลบดัชนีที่เก่ากว่าเจ็ดวัน หลังจากที่คุณกรอกข้อมูล ดัชนีจะคล้ายกับตัวอย่างต่อไปนี้:

นามแฝง Elasticsearch

เราสามารถปล่อยให้เป็นช่วงเริ่มต้น (ทุก ๆ ห้านาที) เพื่อระบุว่าเราต้องการให้งานนี้ทำงานเป็นประจำเพื่อให้นามแฝงของเราทันสมัยอยู่เสมอ เลือก บันทึกงาน และนั่นแหล่ะ! ตอนนี้งานจะทำงานทุก ๆ ห้านาทีเพื่อให้ ElasticsearchAlias ​​อัปเดตอยู่เสมอ

เรียนรู้เพิ่มเติมเกี่ยวกับ Rackspace DBA Services

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถคลิกแชทขาย เพื่อแชทตอนนี้และเริ่มการสนทนา