Elasticsearch-py: دليل استخدام Elasticsearch مع بايثون

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة

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")

توصيات