इलास्टिक्स खोज सूचकांक कैसे बनाएं

How Create Elasticsearch Indices



इलास्टिक्स खोज लॉग विश्लेषण और खोज के लिए उपयोग किए जाने वाले लोकप्रिय ईएलके स्टैक का एक हिस्सा है। एप्लिकेशन और सिस्टम लगातार डेटा लॉग कर रहे हैं जो समस्या निवारण और ट्रैकिंग समस्याओं के लिए बहुत उपयोगी हो सकता है। ELK स्टैक का उपयोग करके, आपके पास इन कार्यों को शीघ्रता से और बहुत आसानी से करने के लिए सर्वोत्तम उपकरण हैं।

इस त्वरित ट्यूटोरियल में, हम Elasticsearch को देखेंगे, विशेष रूप से Elasticsearch इंजन में इंडेक्स कैसे बनाएं। यद्यपि आपको इस ट्यूटोरियल का अनुसरण करने के लिए ELK स्टैक के बारे में किसी व्यापक ज्ञान की आवश्यकता नहीं है, निम्नलिखित विषयों की बुनियादी समझ होना फायदेमंद हो सकता है:







  • टर्मिनल का उपयोग करना, विशेष रूप से, cURL
  • एपीआई और जेएसओएन का बुनियादी ज्ञान
  • HTTP अनुरोध करना

ध्यान दें: यह ट्यूटोरियल यह भी मानता है कि आपके सिस्टम पर Elasticsearch स्थापित और चल रहा है।



इलास्टिक्स खोज सूचकांक क्या हैं?

चीजों को अधिक सरलीकृत या अधिक जटिल किए बिना, इलास्टिक्स खोज सूचकांक संबंधित JSON दस्तावेज़ों का एक संग्रह है।



जैसा कि पिछली पोस्ट में बताया गया है, Elasticsearch सूचकांक JSON ऑब्जेक्ट हैं- जिन्हें Elasticsearch में भंडारण की आधार इकाई माना जाता है। ये संबंधित JSON दस्तावेज़ एक एकल इकाई में संग्रहीत होते हैं जो एक अनुक्रमणिका बनाता है। एक संबंधपरक डेटाबेस में तालिकाओं के रूप में इलास्टिक्स खोज दस्तावेज़ों के बारे में सोचें।





आइए SQL दुनिया में एक डेटाबेस के रूप में Elasticsearch इंडेक्स से संबंधित हैं।

  • MySQL => डेटाबेस => टेबल्स => कॉलम/पंक्तियाँ
  • इलास्टिक्स खोज => सूचकांक => प्रकार => गुणों के साथ JSON दस्तावेज़

इलास्टिक्स खोज इंडेक्स कैसे बनाएं

Elasticsearch अपनी सेवाओं को उजागर करने के लिए एक शक्तिशाली और सहज ज्ञान युक्त REST API का उपयोग करता है। यह कार्यक्षमता आपको इलास्टिक्स खोज क्लस्टर पर संचालन करने के लिए HTTP अनुरोधों का उपयोग करने की अनुमति देती है। इसलिए, हम एक नया इंडेक्स बनाने के लिए क्रिएट इंडेक्स एपीआई का इस्तेमाल करेंगे।



इस गाइड के लिए, हम अनुरोध भेजने और सभी उपयोगकर्ताओं के लिए अखंडता और उपयोगिता को बनाए रखने के लिए कर्ल का उपयोग करेंगे। हालांकि, यदि आप कर्ल के साथ त्रुटियों का सामना करते हैं, तो किबाना कंसोल का उपयोग करने पर विचार करें।

Elasticsearch क्लस्टर में एक नया इंडेक्स बनाने का सिंटैक्स है:

रखना /

एक अनुक्रमणिका बनाने के लिए, आपको केवल अन्य मापदंडों के बिना अनुक्रमणिका नाम पास करना होगा, जो डिफ़ॉल्ट सेटिंग्स का उपयोग करके एक अनुक्रमणिका बनाता है।

आप इंडेक्स की विभिन्न विशेषताओं को भी निर्दिष्ट कर सकते हैं, जैसे कि इंडेक्स बॉडी में:

  • सूचकांक के लिए सेटिंग्स
  • सूचकांक उपनाम
  • अनुक्रमणिका क्षेत्रों के लिए मानचित्रण

अनुक्रमणिका नाम एक आवश्यक पैरामीटर है; अन्यथा, आपको URIL (/) के लिए एक त्रुटि मिलेगी

कर्ल-एक्स पुट लोकलहोस्ट:9200
{'त्रुटि': 'उरी के लिए गलत HTTP विधि [/] और विधि [पुट], अनुमति दी गई: [हटाएं, सिर, प्राप्त करें]', 'स्थिति': 405}

सिंगल_इंडेक्स नाम से एक नया इंडेक्स बनाने के लिए, हम अनुरोध पास करते हैं:

पुट /सिंगल_इंडेक्स

कर्ल के लिए, कमांड का उपयोग करें:

कर्ल-एक्स पुट 'लोकलहोस्ट: 9200/सिंगल_इंडेक्स? सुंदर'

इस आदेश के परिणामस्वरूप HTTP स्थिति 200 ठीक होनी चाहिए और एक संदेश स्वीकार किया जाना चाहिए: सत्य के रूप में:

{
स्वीकार किया: सच,
'shards_acknowledged': सच,
'इंडेक्स': 'सिंगल_इंडेक्स'
}

उपरोक्त अनुरोध डिफ़ॉल्ट सेटिंग्स के साथ एक इंडेक्स सिंगल_इंडेक्स बनाता है क्योंकि हमने कोई कॉन्फ़िगरेशन निर्दिष्ट नहीं किया है।

अनुक्रमणिका नामकरण नियम

इलास्टिक्स खोज सूचकांकों के लिए नाम बनाते समय, आपको निम्नलिखित नामकरण मानकों का पालन करना चाहिए:

  1. इंडेक्स नाम केवल लोअर केस में होना चाहिए।
  2. अनुक्रमणिका नाम डैश (-), अंडरस्कोर (_), या अतिरिक्त चिह्न (+) से प्रारंभ नहीं हो सकते
  3. नाम नहीं हो सकते। या ..
  4. अनुक्रमणिका नामों में विशेष वर्ण शामिल नहीं हो सकते जैसे: , /, *, ?, , , |, `` (अंतरिक्ष वर्ण), , #
  5. अनुक्रमणिका नामों की लंबाई 255 बाइट्स से कम होनी चाहिए। मल्टी-बाइट वर्णों को इंडेक्स नाम की कुल लंबाई में गिना जाएगा। उदाहरण के लिए, यदि किसी एकल वर्ण की लंबाई 8 बाइट्स है, तो नाम की कुल शेष लंबाई 255 - 8 . है
  6. इलास्टिक्स खोज के नवीनतम संस्करण में, ऐसे नाम जो . छिपे हुए सूचकांकों और इलास्टिक्स खोज प्लगइन्स द्वारा उपयोग किए जाने वाले आंतरिक सूचकांकों के लिए आरक्षित हैं।

इंडेक्स बॉडी कैसे बनाएं

इंडेक्स बनाने के लिए पुट अनुरोध का उपयोग करते समय, आप विभिन्न तर्कों को पारित कर सकते हैं जो उस इंडेक्स के लिए सेटिंग्स को परिभाषित करते हैं जिसे आप बनाना चाहते हैं। वे मान जिन्हें आप मुख्य भाग में निर्दिष्ट कर सकते हैं उनमें शामिल हैं:

  • उपनाम: उस अनुक्रमणिका के लिए उपनाम नाम निर्दिष्ट करता है जिसे आप बनाना चाहते हैं; यह पैरामीटर वैकल्पिक है।
  • समायोजन: यह उस इंडेक्स के लिए कॉन्फ़िगरेशन विकल्पों को परिभाषित करता है जिसे आप बनाना चाहते हैं। यदि आप कोई पैरामीटर निर्दिष्ट करने में विफल रहते हैं, तो डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग करके अनुक्रमणिका बनाई जाती है।
  • मानचित्रण: यह इंडेक्स में फ़ील्ड के लिए मैपिंग को परिभाषित करता है। मैपिंग में आप जिन विशिष्टताओं को शामिल कर सकते हैं उनमें शामिल हैं:
    • क्षेत्र का नाम
    • डेटा प्रकार
    • मैपिंग पैरामीटर

बॉडी कॉन्फ़िगरेशन के साथ एक इंडेक्स बनाने के उदाहरण के लिए, नीचे दिए गए अनुरोध पर विचार करें:

डाल /single_index_with_body
{
'समायोजन': {
'नंबर_ऑफ_शर्ड्स': २,
'number_of_replicas': 2
},
मैपिंग: {
'गुण': {
'फ़ील्ड 1': {'टाइप': 'ऑब्जेक्ट'}
}
}
}

कर्ल समकक्ष अनुरोध के लिए:

कर्ल -XPUT 'http://localhost:9200/single_index_with_body' -H 'सामग्री-प्रकार: एप्लिकेशन/json' -d'{'सेटिंग्स': { 'number_of_shards': 2, 'number_of_replicas': 2 }, 'मैपिंग' : { 'गुण': { 'फ़ील्ड 1': { 'प्रकार': 'वस्तु' } } }}'

उपरोक्त अनुरोध एक नया इंडेक्स बनाता है जिसका नाम सिंगल_इंडेक्स_विथ_बॉडी है जिसमें 2 संख्या में शार्क और 2 प्रतिकृतियां हैं। यह फ़ील्ड 1 नाम के फ़ील्ड के साथ मैपिंग भी बनाता है और JSON ऑब्जेक्ट के रूप में टाइप करता है।

एक बार जब आप अनुरोध भेज देते हैं, तो आपको अनुरोध की स्थिति के साथ प्रतिक्रिया मिलेगी:

{
स्वीकार किया: सच,
'shards_acknowledged': सच,
'इंडेक्स': 'single_index_with_body'
}

स्वीकृत दिखाता है कि क्या सूचकांक सफलतापूर्वक क्लस्टर में बनाया गया था, जबकि shards_acknowledged दिखाता है कि क्या समय समाप्त होने से पहले निर्दिष्ट सूचकांक में प्रत्येक शार्क के लिए आवश्यक संख्या में शार्प प्रतियां शुरू की गई थीं।

इलास्टिक्स खोज सूचकांक कैसे देखें

आपके द्वारा बनाए गए इंडेक्स के बारे में जानकारी देखने के लिए, इंडेक्स बनाने के समान अनुरोध का उपयोग करें, लेकिन PUT के बजाय HTTP विधि का उपयोग करें:

प्राप्त करें /single_index_with_body

कर्ल के लिए,

कर्ल -XGET http://localhost:9200/single_index_with_body

यह आदेश आपको अनुरोधित अनुक्रमणिका के बारे में विस्तृत जानकारी देगा:

{
'सिंगल_इंडेक्स_विथ_बॉडी': {
'उपनाम' : { },
'मैपिंग' : {
'गुण' : {
'फ़ील्ड1' : {
'टाइप': 'ऑब्जेक्ट'
}
}
},
'समायोजन' : {
'अनुक्रमणिका' : {
'रूटिंग' : {
'आवंटन' : {
'शामिल' : {
'_tier_preference' : 'data_content'
}
}
},
'नंबर_ऑफ_शर्ड्स': '2',
'provided_name': 'single_index_with_body',
'क्रिएशन_डेट': '1611045687208',
'number_of_replicas' : '2',
'यूयूआईडी': '3TRkO7xmQcSUOOGtb6pXVA',
'संस्करण' : {
'बनाया': '7100299'
}
}
}
}
}

निष्कर्ष

इस गाइड ने चर्चा की कि नए इंडेक्स बनाने के लिए इंडेक्स एपीआई बनाने के लिए इलास्टिक्स खोज के साथ कैसे काम किया जाए। हमने यह भी चर्चा की कि इंडेक्स और कॉन्फ़िगरेशन सेटिंग्स के लिए उपयुक्त नाम कैसे बनाएं।

इस गाइड का उपयोग करके, अब आप Elasticsearch API का उपयोग करके इंडेक्स बना और देख सकते हैं।