इस पोस्ट में, मैं ऑब्जेक्टरॉकेट-होस्टेड क्यूरेटर कार्यान्वयन में हमारे उपनाम कार्रवाई तक पहुंच का जश्न मनाने के लिए Elasticsearch® उपनामों पर जाता हूं। मैं Elasticsearch उपनामों के लाभों की भी समीक्षा करता हूं और आप उनका उपयोग कैसे कर सकते हैं।
इलास्टिक्स खोज में उपनामों के उपयोग का परिचय
मूल रूप से 24 अगस्त, 2017 को ObjectRocket.com/blog पर प्रकाशित किया गया
उत्कृष्ट इलास्टिक्स खोज स्वच्छता के लिए एक अच्छी रणनीति बड़े पैमाने पर डेटा रखने वाले बड़े सूचकांकों से बचना है। हालाँकि, आपका डेटा कई सूचकांकों में फैल जाने के बाद, आप शायद उन पर खोज करने का सबसे अच्छा तरीका चाहते हैं। यही उपनाम काम आते हैं।
Elasticsearch में उपनाम ठीक वैसे ही हैं जैसे वे ध्वनि करते हैं:एक द्वितीयक नाम जिसका उपयोग किसी अनुक्रमणिका, या एकाधिक अनुक्रमणिका को संदर्भित करने के लिए किया जा सकता है, जिसमें आपकी आवश्यकताओं को समायोजित करने के लिए कुछ फ़िल्टरिंग भी शामिल हो सकती है। इस पोस्ट में, मैं आपको उपनामों का उपयोग करने के कुछ शानदार तरीकों और हमारी सुविधा का उपयोग करने की प्रक्रिया के बारे में बताना चाहता हूं, जिससे आप अपने ऑब्जेक्ट रॉकेट इलास्टिक्स खोज समूहों के लिए उपनाम क्यूरेटर कार्य को जल्दी और आसानी से सेट कर सकते हैं।
उपनामों के साथ CRUD (बनाएं, पढ़ें, अपडेट करें और हटाएं)
आइए एक सरल उदाहरण के माध्यम से चलते हैं कि उपनाम कैसे काम करता है। आप या तो _cat
. का उपयोग करके उपनामों को सूचीबद्ध कर सकते हैं एपीआई, जो प्रत्येक उपनाम-इंडेक्स एसोसिएशन के लिए एक लाइन लौटाता है और क्या फ़िल्टरिंग या रूटिंग लागू किया जाता है:
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 में सबसे उपयोगी सुविधाओं में से एक है Reindex एपीआई। हालांकि, रीइंडेक्सिंग के बाद, आपको अभी भी पुराने इंडेक्स से नए इंडेक्स में कटओवर का प्रबंधन करना होगा। उपनाम आपको इस कटओवर को बिना डाउनटाइम के बनाने की अनुमति देते हैं। यहां बताया गया है:
-
मान लें कि आपके पास
oldIndex
. नामक एक अनुक्रमणिका है और इसेnewIndex
. में पुन:अनुक्रमित करना चाहते हैं । -
एक उपनाम बनाएं
myalias
और इसेoldIndex
. में जोड़ें । -
सुनिश्चित करें कि आपका आवेदन
myalias
. की ओर इशारा कर रहा है के बजायoldIndex
। -
अपना
newIndex
बनाएं औरoldIndex
. से डेटा को फिर से अनुक्रमित करना शुरू करें इसमें। -
newIndex
जोड़ें करने के लिएmyalias
औरoldIndex
remove को हटा दें . इसे एक ही कमांड में करें। परिवर्तन परमाणु (बहुत छोटा और व्यक्तिगत) है, इसलिए संक्रमण के दौरान कोई समस्या नहीं होगी। -
सत्यापित करें कि आप उपनाम के साथ अपेक्षित परिणाम प्राप्त कर रहे हैं, और फिर आप
oldIndex
को हटा सकते हैं जब आप तैयार हों।
अनावश्यक चरणों से बचने के लिए अपने आवेदन से पढ़ने या प्रश्नों के लिए उपनाम का उपयोग करना अच्छा अभ्यास है।
समय-आधारित सूचकांकों की श्रेणियां हथियाना
अगर आप Logstash® या Beats® का उपयोग कर रहे हैं, तो आप शायद something-yyyy.mm.dd
नाम के इंडेक्स से परिचित हैं। . यह डेटा की जांच और प्रबंधन को वास्तव में आसान बनाता है। वाइल्डकार्ड और इंडेक्स सूचियां हमेशा उतनी लचीली नहीं होती जितनी आप चाहते हैं, खासकर जब आप कई तिथियों में खोजना चाहते हैं। उपनाम आपको ऐसे मामलों के लिए एक आसान समाधान प्रदान करते हैं। मान लें कि आपके पास दैनिक लॉगस्टैश सूचकांक हैं और आप अपने लॉग को 30 दिनों तक बनाए रखते हैं। हालांकि, आपको कुछ विशेष प्रकार की क्वेरी के लिए केवल पिछले सात दिनों को देखने की आवश्यकता हो सकती है। उपनाम और क्यूरेटर का उपयोग करके, आप इसे आसानी से कर सकते हैं।
-
इस उदाहरण के समान उपनाम बनाएं:
lastSevenDays
। -
इंडेक्स को नए उपनाम में डिफ़ॉल्ट रूप से जोड़ने के लिए अपना इंडेक्स टेम्प्लेट सेट करें।
-
इलास्टिक्स खोज क्यूरेटर का उपयोग करना उपनाम क्रिया और आयु/पैटर्न फ़िल्टर, या एक मूल स्क्रिप्ट के साथ, सात दिनों से पुराने सूचकांकों को निकालने के लिए एक पुनरावर्ती कार्य सेट करें।
-
वहां से,
lastSevenDays
. तक की सभी खोजें केवल उन सूचकांकों को हिट करें जो पिछले सात दिनों में बनाए गए थे।
ग्राहक उदाहरण
मैं अपने ग्राहकों में से एक से एक छोटे से उदाहरण को बंद करना चाहता हूं। इस ग्राहक को धीमेपन के साथ कुछ समस्याएं थीं। कुछ समीक्षा के बाद, हमने देखा कि उनकी एक सामान्य क्वेरी वास्तव में क्लस्टर की उनकी संपूर्ण तिथि सीमा में खोज कर रही थी। यह क्वेरी पहले सूचीबद्ध परिदृश्य के समान थी और केवल पिछले सात दिनों के डेटा की आवश्यकता थी, इसलिए यह पिछले सात दिनों से सूचकांकों को इंगित करने के लिए नियमित रूप से अद्यतन किए गए उपनाम के साथ प्रबंधन के लिए एक आदर्श उम्मीदवार था। निम्नलिखित ग्राफ़ में, आप देख सकते हैं कि उनके क्लस्टर के प्रदर्शन पर प्रभाव आश्चर्यजनक है:
चूंकि इस उपनाम से अक्सर पूछताछ की जाती थी, इसलिए हम इस परिवर्तन के प्रभाव को देख सकते हैं। ये ग्राफ़ हमें दिखाते हैं कि सभी नोड्स पर CPU उपयोग में 50% से अधिक की गिरावट आई है, क्वेरी कैश निष्कासन की संख्या में ~ 75% की गिरावट आई है। हालांकि आपको दिखाई देने वाले परिणाम शायद इतने कठोर न हों, क्वेरी आवृत्ति और अनुक्रमणिका आकार के आधार पर, यह दर्शाता है कि आपकी खोजों और अनुक्रमणिका के दायरे को उचित रूप से प्रबंधित करना कितना महत्वपूर्ण है।
रिकैप करें
एलियासेस Elasticsearch टूलबॉक्स में एक और टूल है जो आपके क्लस्टर के साथ दैनिक प्रबंधन और काम करना आसान बनाता है। यह पोस्ट संपूर्ण नहीं है, लेकिन इससे आपको पता चल जाएगा कि आप अपने इलास्टिक्स खोज कार्यान्वयन में उपनामों का उपयोग कहां और कैसे कर सकते हैं।
ऑब्जेक्टरॉकेट के माध्यम से आप एलियास क्यूरेटर टास्क कैसे सेट कर सकते हैं?
जबकि हमारे इलास्टिक्स खोज क्लस्टर पहले से ही उपनामों का समर्थन करते हैं, नई उपनाम क्यूरेटर कार्य सुविधा आपके मानदंड के आधार पर एक उपनाम से सूचकांकों को जोड़ने या हटाने के लिए फ़िल्टर निर्दिष्ट करने के लिए आपको सक्षम करके उपनामों के नियमित रखरखाव को आसान बनाती है।
इसे स्पष्ट करने के लिए, आइए lastSevenDays
लें उपनाम उदाहरण, जिसमें पहले से ही इलास्टिक्स खोज क्यूरेटर का उपयोग करने वाले संदर्भ हैं। इसे सरल रखने के लिए, हमने क्यूरेटर कार्य के पहले भाग को हमारे लिए उपनाम निर्धारित करने दिया। यदि आप अधिक कस्टम सेटिंग्स रखना चाहते हैं, तो आप मौजूदा उपनामों को क्यूरेटोटास्क में संदर्भित कर सकते हैं, जिससे आप अलग से उपनाम सेट कर सकते हैं।
इस उपनाम को प्रबंधित करने के लिए, आपको केवल पिछले सात दिनों के भीतर बनाए जाने वाले आयु मानदंड को पूरा करने वाले सूचकांकों को रखते हुए इसे अप-टू-डेट रखना चाहिए। उस क्लस्टर के इंस्टेंस विवरण पृष्ठ से प्रारंभ करें जिसके लिए हम एक उपनाम क्यूरेटर कार्य जोड़ना चाहते हैं:
अब, क्यूरेटर . चुनें वर्तमान क्यूरेटर कार्यों को देखने के लिए टैब:
जैसा कि आप देख सकते हैं, हमारे पास पहले से ही कुछ क्यूरेटर कार्य हैं। आइए एक और बनाएं—इस बार एक उपनाम क्यूरेटर कार्य के साथ। ऐसा करने के लिए, कार्य जोड़ें select चुनें :
अब, आप उपनाम . का चयन कर सकते हैं कार्य प्रकार:
अपने कार्य का नामकरण करने के बाद, हमें उपनाम नाम निर्दिष्ट करना होगा। आइए lastSevenDays
use का उपयोग करें इस उदाहरण के लिए। आप कुछ विकल्प भी देख सकते हैं:जोड़ें और निकालें . ये आपको उन सूचकांकों के लिए फ़िल्टर निर्दिष्ट करने में सक्षम करते हैं जिन्हें आप उपनाम से जोड़ना या हटाना चाहते हैं। lastSevenDays
. के लिए , हम कुछ सूचकांक जोड़ने जा रहे हैं और अन्य को हटा देंगे। तो, आइए दोनों का चयन करें:
वांछित फिल्टर सात दिनों से अधिक हाल के सभी सूचकांकों को जोड़ते हैं और सात दिनों से अधिक पुराने को हटा देते हैं। आपके द्वारा उन्हें भरने के बाद, सूचकांक निम्न उदाहरण के समान दिखाई देते हैं:
हम यह निर्दिष्ट करने के लिए डिफ़ॉल्ट अंतराल (हर पांच मिनट) पर छोड़ सकते हैं कि हम अपने उपनाम को अप-टू-डेट रखने के लिए यह कार्य नियमित रूप से चलाना चाहते हैं। कार्य सहेजें का चयन करें , और बस! अब ElasticsearchAlias को अपडेट रखने के लिए कार्य हर पांच मिनट में चलता है।
रैकस्पेस डीबीए सेवाओं के बारे में अधिक जानें।
कोई टिप्पणी करने या प्रश्न पूछने के लिए प्रतिक्रिया टैब का उपयोग करें। आप विक्रय चैट . पर भी क्लिक कर सकते हैं अभी चैट करने और बातचीत शुरू करने के लिए।