مقدمة
Elasticsearch هو نظام بحث موزّع وقوي يعتمد على Apache Lucene، مصمم للبحث النصي الكامل، وتسجيل البيانات، والمراقبة، وتحليل كميات ضخمة من البيانات. للتكامل مع Python، يُستخدم العميل الرسمي elasticsearch-py الذي يوفر وصولاً كاملاً إلى جميع واجهات Elasticsearch API عبر كود Python.
تتيح مكتبة elasticsearch-py للمطورين تنفيذ بحث متقدم، وتجميعات، ومعالجة كميات كبيرة من البيانات مباشرة في تطبيقات Python، بما في ذلك خدمات الويب، وأدوات التحليل، وأنظمة المراقبة.
وصف مكتبة elasticsearch-py
Elasticsearch-py هو عميل Python الرسمي للعمل مع Elasticsearch. توفر المكتبة وصولاً منخفض المستوى إلى جميع وظائف Elasticsearch عبر RESTful API، مع توفير واجهة 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
- الفهرس (Index) — مشابه للجدول في قواعد البيانات العلائقية، يحتوي على مستندات ذات بنية متشابهة
- المستند (Document) — كائن JSON مخزّن في الفهرس، مشابه لسجل في جدول
- الحقل (Field) — سمة من سمات المستند، مشابه لعمود في جدول
- التخطيط (Mapping) — وصف بنية المستند وأنواع الحقول
- الشارد (Shard) — وحدة تخزين فعلية لبيانات الفهرس
- النسخة المكررة (Replica) — نسخة من الشارد لضمان تحمل الأخطاء
إدارة الفهارس
إنشاء الفهارس والمخططات
mapping = {
"mappings": {
"properties": {
"title": {"type": "text", "analyzer": "arabic"},
"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")
أيضاً في المكتبة
تكوين التطبيقات بلغة Rust: مكتبتا config و dotenv
العمل مع التواريخ في Kotlin: المكتبات والأدوات (Kotlinx-datetime, Joda-Time, java.time)
openai-api-rs في Rust: دليل شامل مع أمثلة عملية
إرسال البريد الإلكتروني في PHP: PHPMailer وSwiftMailer وmail() — دليل شامل
توليد PDF في Swift: إنشاء المستندات لنظامي iOS وmacOS