इस पोस्ट में, मैं Elasticsearch® aliases को कवर कर रहा हूँ ताकि ObjectRocket-होस्टेड Curator कार्यान्वयन में हमारे Alias एक्शन तक पहुँच का जश्न मनाया जा सके। मैं Elasticsearch aliases के फायदों की भी समीक्षा करता हूँ और आप उनका उपयोग कैसे कर सकते हैं।
Elasticsearch में Aliases के उपयोग का परिचय
मूल रूप से 24 अगस्त, 2017 को ObjectRocket.com/blog पर प्रकाशित
उत्कृष्ट Elasticsearch स्वच्छता के लिए एक अच्छी रणनीति है ऐसे विशाल indices से बचना जो अत्यधिक मात्रा में डेटा रखते हैं। हालांकि, एक बार जब आपका डेटा कई indices में फैल जाता है, तो आप शायद उन सभी में खोज करने का सबसे अच्छा तरीका चाहेंगे। यहीं पर aliases काम आते हैं।
Elasticsearch में aliases ठीक वही हैं जो वे सुनते हैं: एक द्वितीयक नाम जिसका उपयोग किसी index को संदर्भित करने के लिए किया जा सकता है, या एकाधिक indices, जिसमें आपकी आवश्यकताओं को पूरा करने के लिए कुछ फ़िल्टरिंग भी शामिल हो सकती है। इस पोस्ट में, मैं आपको aliases का उपयोग करने के कुछ शानदार तरीकों और हमारी सुविधा का उपयोग करने की प्रक्रिया के बारे में बताना चाहता हूँ, जिससे आप अपने Object Rocket Elasticsearch क्लस्टर्स के लिए Alias Curator टास्क को जल्दी और आसानी से सेट कर सकें।
Aliases के साथ CRUD (Create, Read, Update और Delete)
आइए एक सरल उदाहरण के माध्यम से देखते हैं कि aliases कैसे काम करते हैं। आप _cat API का उपयोग करके aliases सूचीबद्ध कर सकते हैं, जो प्रत्येक alias-index एसोसिएशन के लिए एक लाइन और क्या फ़िल्टरिंग या रूटिंग लागू है, लौटाता है:
GET _cat/aliases?v alias index filter routing.index routing.search atest test1 – – – atest test2 – – – atest2 test2 * – –
वैकल्पिक रूप से, आप सभी aliases देखने के लिए /_alias एंडपॉइंट का उपयोग कर सकते हैं या केवल उस index के aliases देखने के लिए /index/_alias एंडपॉइंट का उपयोग कर सकते हैं। आप PUT कमांड का उपयोग करके या index template का उपयोग करके index निर्माण के दौरान aliases भी जोड़ सकते हैं:
PUT /test2 { “aliases” : { “atest” : {}, “atest2” : { “filter” : { “term” : {“user” : “objectrocket” } } } } }
फिर, /_aliases एंडपॉइंट का उपयोग करके बाद में जोड़ें या संशोधित करें, index और alias को जोड़ने या हटाने के लिए निर्दिष्ट करके।
POST /_aliases { “actions” : [ { “add” : { “index” : “test1”, “alias” : “atest” } }, { “remove” : { “index” : “test3”, “alias” : “atest” } } ] }
उसके बाद, आप query में index नाम के बजाय alias नाम का उपयोग कर सकते हैं। ध्यान रखें कि आप केवल उसी alias में दस्तावेज़ index कर सकते हैं जो एक ही index को इंगित करता है। जाहिर है, aliases में बहुत अधिक गहराई है जो आप आधिकारिक डॉक्स से प्राप्त कर सकते हैं, लेकिन यह आपको aliases के साथ काम करने का एहसास देना चाहिए।
बड़ी बात क्या है?
यह सब बहुत सरल लगता है, और आप पहले से ही बिक चुके हो सकते हैं, लेकिन यदि आप नहीं हैं, तो यहां कुछ स्थान हैं जहां aliases वास्तव में मदद करते हैं।
बिना डाउनटाइम के Reindex
Elasticsearch में सबसे उपयोगी सुविधाओं में से एक Reindex API है। हालांकि, reindexing के बाद, आपको अभी भी old index से new index में कटओवर प्रबंधित करना होगा। Aliases आपको इस कटओवर को बिना डाउनटाइम के करने की अनुमति देते हैं। यहां बताया गया है:
मान लें कि आपके पास
oldIndexनामक एक index है और आप इसेnewIndexमें reindex करना चाहते हैं।myaliasनामक एक alias बनाएं और इसेoldIndexमें जोड़ें।सुनिश्चित करें कि आपका एप्लिकेशन
oldIndexके बजायmyaliasको इंगित कर रहा है।अपना
newIndexबनाएं औरoldIndexसे इसमें डेटा reindex करना शुरू करें।newIndexकोmyaliasमें जोड़ें औरoldIndexको हटा दें। इसे एक ही कमांड में करें। परिवर्तन परमाणु (बहुत छोटा और व्यक्तिगत) है, इसलिए संक्रमण के दौरान कोई समस्या नहीं होगी।सत्यापित करें कि आपको alias के साथ अपेक्षित परिणाम मिल रहे हैं, और फिर जब आप तैयार हों तो
oldIndexको हटा सकते हैं।
अपने एप्लिकेशन से reads या queries के लिए alias का उपयोग करना अच्छा अभ्यास है ताकि अनावश्यक चरणों से बचा जा सके।
समय-आधारित indices की ranges प्राप्त करना
यदि आप Logstash® या Beats® का उपयोग कर रहे हैं, तो आप शायद something-yyyy.mm.dd नामक indices से परिचित हैं। इससे डेटा की क्यूरेशन और प्रबंधन वास्तव में आसान हो जाता है। वाइल्डकार्ड्स और index lists हमेशा उतने लचीले नहीं होते जितना आप चाहेंगे, खासकर जब आप तारीखों की एक श्रृंखला में खोजना चाहते हैं। Aliases ऐसे मामलों के लिए एक आसान समाधान प्रदान करते हैं। मान लें कि आपके पास दैनिक logstash indices हैं और आप अपने logs को 30 दिनों तक बनाए रखते हैं। हालांकि, आपको कुछ प्रकार के queries के लिए केवल पिछले सात दिनों को देखने की आवश्यकता हो सकती है। Aliases और curator का उपयोग करके, आप इसे काफी आसानी से कर सकते हैं।
इस उदाहरण के समान एक alias बनाएं:
lastSevenDays।अपने index template को डिफ़ॉल्ट रूप से नए alias में index जोड़ने के लिए सेट करें।
Elasticsearch Curator का उपयोग alias action और age/pattern filters के साथ, या एक बुनियादी स्क्रिप्ट का उपयोग करके, सात दिनों से अधिक पुराने indices को हटाने के लिए एक आवर्ती टास्क सेट करें।
वहां से,
lastSevenDaysपर सभी खोजें केवल उन indices को हिट करती हैं जो पिछले सात दिनों में बनाए गए थे।
ग्राहक उदाहरण
मैं अपने एक ग्राहक के एक छोटे उदाहरण के साथ समाप्त करना चाहता हूं। इस ग्राहक को सुस्ती के साथ कुछ समस्याएं थीं। कुछ समीक्षा के बाद, हमने देखा कि उनके सामान्य queries में से एक वास्तव में क्लस्टर की पूरी तारीख सीमा में खोज कर रहा था। यह query पहले सूचीबद्ध परिदृश्य के समान था और केवल पिछले सात दिनों के डेटा की आवश्यकता थी, इसलिए यह एक alias के साथ प्रबंधन के लिए एक आदर्श उम्मीदवार था जिसे नियमित रूप से पिछले सात दिनों के indices को इंगित करने के लिए अपडेट किया जाता था। निम्नलिखित ग्राफ़ में, आप देख सकते हैं कि उनके क्लस्टर के प्रदर्शन पर प्रभाव आश्चर्यजनक है:
चूंकि इस alias को बार-बार query किया जाता था, हम देख सकते हैं कि इस परिवर्तन का क्या प्रभाव पड़ा। ये ग्राफ़ हमें दिखाते हैं कि सभी नोड्स पर CPU उपयोग 50% से अधिक गिर गया, query cache evictions की संख्या ~75% गिर गई। जबकि आपके द्वारा देखे गए परिणाम इतने नाटकीय नहीं हो सकते हैं, query frequency और index size के आधार पर, यह दर्शाता है कि आपकी खोजों के दायरे को प्रबंधित करना और उचित रूप से index करना कितना महत्वपूर्ण है।
सारांश
Aliases Elasticsearch टूलबॉक्स में एक और उपकरण है जो आपके क्लस्टर को दिन-प्रतिदिन प्रबंधित करना और उसके साथ काम करना आसान बनाना चाहिए। यह पोस्ट संपूर्ण नहीं है लेकिन आपको एक विचार देना चाहिए कि आप अपने Elasticsearch कार्यान्वयन में aliases का उपयोग कहां और कैसे कर सकते हैं।
ObjectRocket के माध्यम से Alias Curator टास्क कैसे सेट कर सकते हैं?
जबकि हमारे Elasticsearch क्लस्टर्स पहले से ही aliases का समर्थन करते हैं, नई Alias Curator टास्क सुविधा नियमित रूप से aliases के रखरखाव को सेट करना सरल बनाती है, जिससे आप अपने मानदंडों के आधार पर नियमित अंतराल पर indices को alias में जोड़ने या हटाने के लिए फ़िल्टर निर्दिष्ट कर सकते हैं।
इसे स्पष्ट करने के लिए, आइए lastSevenDays alias उदाहरण लें, जिसमें पहले से ही Elasticsearch Curator का उपयोग करके संदर्भ हैं। इसे सरल रखने के लिए, हम Curator टास्क के पहले रन को हमारे लिए Alias सेट करने देते हैं। आप Curator टास्क में मौजूदा aliases का संदर्भ दे सकते हैं, जिससे आप alias को अलग से सेट कर सकते हैं यदि आप अधिक कस्टम सेटिंग्स चाहते हैं।
इस alias को प्रबंधित करने के लिए, आपको इसे केवल उन indices के साथ अद्यतन रखना चाहिए जो पिछले सात दिनों के भीतर बनाए गए होने के आयु मानदंड को पूरा करते हैं। उस क्लस्टर के instance details पेज पर शुरू करें जिसके लिए हम Alias Curator टास्क जोड़ना चाहते हैं:
अब, वर्तमान curator टास्क देखने के लिए Curator टैब चुनें:
जैसा कि आप देख सकते हैं, हमारे पास पहले से ही कुछ curator टास्क हैं। आइए एक और बनाएं—इस बार Alias Curator टास्क के साथ। ऐसा करने के लिए, Add Task चुनें:
अब, आप Alias टास्क प्रकार चुन सकते हैं:
अपने टास्क का नाम देने के बाद, हमें alias नाम निर्दिष्ट करने की आवश्यकता है। इस उदाहरण के लिए lastSevenDays का उपयोग करें। आप कुछ विकल्प भी देख सकते हैं: Add और Remove। ये आपको उन indices के लिए फ़िल्टर निर्दिष्ट करने में सक्षम बनाते हैं जिन्हें आप alias में जोड़ना या हटाना चाहते हैं। lastSevenDays के लिए, हम कुछ indices जोड़ने जा रहे हैं और दूसरों को हटा रहे हैं। तो, दोनों का चयन करें:
वांछित फ़िल्टर सात दिनों से अधिक हाल के सभी indices को जोड़ते हैं और सात दिनों से अधिक पुराने को हटाते हैं। उन्हें भरने के बाद, indices निम्नलिखित उदाहरण के समान दिखते हैं:
इसे डिफ़ॉल्ट अंतराल (हर पांच मिनट) पर छोड़ सकते हैं यह निर्दिष्ट करने के लिए कि हम चाहते हैं कि यह टास्क हमारे Elasticsearch Alias को अद्यतन रखने के लिए नियमित रूप से चले। Save Task चुनें, और बस! अब टास्क हर पांच मिनट में चलता है ताकि Elasticsearch Alias अद्यतन रहे।
Rackspace DBA सेवाओं के बारे में अधिक जानें।
कोई टिप्पणी करने या प्रश्न पूछने के लिए Feedback टैब का उपयोग करें। आप Sales Chat पर क्लिक करके अभी चैट कर सकते हैं और बातचीत शुरू कर सकते हैं।