Go (Golang) के लिए Elasticsearch क्लाइंट: एक संपूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go (Golang) के लिए Elasticsearch क्लाइंट: सर्च इंजन के साथ काम करने के लिए एक शक्तिशाली टूल



Elasticsearch एक वितरित, फुल-टेक्स्ट सर्च सिस्टम है, जो Apache Lucene पर बनाया गया है। Go (Golang) में एप्लिकेशन से इसके साथ प्रभावी ढंग से इंटरैक्ट करने के लिए आधिकारिक क्लाइंट go-elasticsearch का उपयोग किया जाता है। यह लाइब्रेरी दस्तावेज़ों को इंडेक्स करने से लेकर जटिल विश्लेषणात्मक क्वेरी तक, सभी बुनियादी ऑपरेशन करने के लिए एक सुविधाजनक और उच्च-प्रदर्शन API प्रदान करती है।



इस लेख में, हम लाइब्रेरी की क्षमताओं, इसकी स्थापना, कॉन्फ़िगरेशन पर विस्तार से चर्चा करेंगे और Go में व्यावहारिक कोड उदाहरण प्रदान करेंगे।



go-elasticsearch की मुख्य विशेषताएं



  • Elasticsearch REST API का पूर्ण समर्थन — इंडेक्स, दस्तावेज़, सर्च, एग्रीगेशन और क्लस्टर प्रबंधन के साथ काम करना।
  • टाइप-सेफ क्वेरी — JSON क्वेरी बनाने के लिए Go स्ट्रक्चर का उपयोग।
  • स्वचालित कनेक्शन प्रबंधन — कनेक्शन पूल, त्रुटियों पर पुनः प्रयास, लोड बैलेंसिंग।
  • बल्क ऑपरेशन के लिए समर्थन — दस्तावेज़ों की सामूहिक इंडेक्सिंग और अपडेट।
  • Go कॉन्टेक्स्ट के साथ एकीकरण — क्वेरी रद्द करना और टाइमआउट।
  • आसान कॉन्फ़िगरेशन — कस्टम HTTP क्लाइंट, लॉगिंग, कम्प्रेशन।


इंस्टॉलेशन



लाइब्रेरी स्थापित करने के लिए टर्मिनल में निम्न कमांड चलाएँ:



go get github.com/elastic/go-elasticsearch/v8


सुनिश्चित करें कि आपका Go संस्करण 1.18 या उससे अधिक है। यदि आप Elasticsearch के पुराने संस्करण (जैसे, 7.x) का उपयोग कर रहे हैं, तो क्लाइंट का संबंधित संस्करण स्थापित करें:



go get github.com/elastic/go-elasticsearch/v7


बेसिक कनेक्शन और कॉन्फ़िगरेशन



काम शुरू करने के लिए, Elasticsearch सर्वर का पता निर्दिष्ट करते हुए एक क्लाइंट बनाएँ:



package main

import ( "log" "github.com/elastic/go-elasticsearch/v8")

func main() { cfg := elasticsearch.Config{ Addresses: []string{ "http://localhost:9200", }, // यदि प्रमाणीकरण आवश्यक हो: // Username: "elastic", // Password: "changeme", }

es, err := elasticsearch.NewClient(cfg) if err != nil { log.Fatalf("क्लाइंट बनाने में त्रुटि: %s", err) }

// कनेक्शन की जाँच res, err := es.Info() if err != nil { log.Fatalf("जानकारी प्राप्त करने में त्रुटि: %s", err) } defer res.Body.Close()

log.Println(res.String())}


दस्तावेज़ों को इंडेक्स करना



इंडेक्स में दस्तावेज़ जोड़ने के लिए Index() या Create() विधि का उपयोग किया जाता है। टाइप किए गए डेटा के साथ एक उदाहरण देखें:



type Article struct {    ID      int      `json:"id"`    Title   string   `json:"title"`    Content string   `json:"content"`    Tags    []string `json:"tags"`    Date    string   `json:"date"`}

func indexArticle(es *elasticsearch.Client, article Article) error { body, err := json.Marshal(article) if err != nil { return err }

req := esapi.IndexRequest{ Index: "articles", DocumentID: strconv.Itoa(article.ID), Body: strings.NewReader(string(body)), Refresh: "true", // तत्काल अपडेट के लिए }

res, err := req.Do(context.Background(), es) if err != nil { return err } defer res.Body.Close()

if res.IsError() { return fmt.Errorf("इंडेक्सिंग त्रुटि: %s", res.String()) }

return nil}


दस्तावेज़ खोजना



सर्च क्वेरी निष्पादित करने के लिए Search() विधि का उपयोग किया जाता है। फुल-टेक्स्ट सर्च का उदाहरण:



func searchArticles(es *elasticsearch.Client, query string) ([]Article, error) {    var buf bytes.Buffer    searchQuery := map[string]interface{}{        "quer                    

अनुशंसाएँ