परिचय
Elasticsearch एक शक्तिशाली डिस्ट्रीब्यूटेड सर्च इंजन है जो Apache Lucene पर आधारित है। इसका उपयोग फुल-टेक्स्ट सर्च, लॉगिंग, मॉनिटरिंग और बड़े डेटा एनालिटिक्स के लिए किया जाता है। Python के साथ Elasticsearch को इंटीग्रेट करने के लिए आधिकारिक क्लाइंट elasticsearch-py का उपयोग किया जाता है, जो Python कोड के माध्यम से सभी Elasticsearch API तक पूर्ण एक्सेस प्रदान करता है।
elasticsearch-py लाइब्रेरी डेवलपर्स को वेब सर्विसेज, एनालिटिकल टूल्स और मॉनिटरिंग सिस्टम में एडवांस्ड सर्च, एग्रीगेशन और बड़े डेटा प्रोसेसिंग को सीधे Python एप्लिकेशन में लागू करने की सुविधा देती है।
elasticsearch-py लाइब्रेरी का परिचय
Elasticsearch-py Elasticsearch के लिए आधिकारिक Python क्लाइंट है। यह लाइब्रेरी RESTful API के माध्यम से Elasticsearch के सभी फीचर्स तक लो-लेवल एक्सेस प्रदान करती है, साथ ही एक सुविधाजनक Python इंटरफेस भी देती है।
लाइब्रेरी की मुख्य विशेषताएं:
- आधिकारिक सपोर्ट: Elastic टीम द्वारा विकसित और मेंटेन की जाती है
- पूर्ण संगतता: Elasticsearch के सभी वर्जन को सपोर्ट करती है
- ऑटोमैटिक नोड डिस्कवरी: क्लस्टर के नोड्स को ऑटोमैटिकली डिटेक्ट और कनेक्ट कर सकती है
- कनेक्शन पूलिंग: क्लस्टर के साथ कनेक्शन का कुशल प्रबंधन
- एरर हैंडलिंग: बिल्ट-इन एक्सेप्शन हैंडलिंग सिस्टम
- सीरियलाइजेशन: Python ऑब्जेक्ट्स का JSON में ऑटोमैटिक कन्वर्जन
इंस्टॉलेशन और क्लस्टर से कनेक्शन
इंस्टॉलेशन
pip install elasticsearch
SSL सर्टिफिकेट के साथ काम करने के लिए:
pip install elasticsearch[async]
लोकल क्लस्टर से कनेक्शन
from elasticsearch import Elasticsearch
es = Elasticsearch("http://localhost:9200")
ऑथराइजेशन के साथ रिमोट क्लस्टर से कनेक्शन
es = Elasticsearch(
"https://your-cluster:9200",
basic_auth=("user", "password"),
verify_certs=True
)
API-की का उपयोग करके कनेक्शन
es = Elasticsearch(
"https://your-cluster:9200",
api_key="your_api_key",
verify_certs=True
)
कई नोड्स से कनेक्शन
es = Elasticsearch(
[
"https://node1:9200",
"https://node2:9200",
"https://node3:9200"
],
basic_auth=("user", "password")
)
Elasticsearch की मुख्य अवधारणाएं
- इंडेक्स — रिलेशनल डेटाबेस में टेबल के समान, इसमें समान संरचना के दस्तावेज़ होते हैं
- दस्तावेज़ — JSON ऑब्जेक्ट जो इंडेक्स में स्टोर होता है, टेबल में रिकॉर्ड के समान
- फील्ड — दस्तावेज़ का गुण, टेबल में कॉलम के समान
- मैपिंग — दस्तावेज़ की संरचना और फील्ड के प्रकारों का विवरण
- शार्ड — इंडेक्स डेटा स्टोरेज की भौतिक इकाई
- रिप्लिका — फॉल्ट टॉलरेंस के लिए शार्ड की कॉपी
इंडेक्स का प्रबंधन
इंडेक्स और स्कीमा बनाना
mapping = {
"mappings": {
"properties": {
"title": {"type": "text", "analyzer": "standard"},
"tags": {"type": "keyword"},
"published": {"type": "date"},
"content": {"type": "text"},
"author": {"type": "keyword"},
"views": {"type": "integer"}
}
},
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
}
}
es.indices.create(index="articles", body=mapping)
इंडेक्स हटाना
es.indices.delete(index="articles")