كيفية تثبيت وتكوين Elasticsearch على أوبونتو 22.04

A previous version of this article was written by Toli.

مقدمة

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

سيقوم هذا المقال بإرشادك خلال تثبيت إلستيك سيرتش، تكوينه لحالتك الاستخدامية، تأمين التثبيت الخاص بك، والبدء في العمل مع خادم إلستيك سيرتش الخاص بك.

المتطلبات المسبقة

قبل اتباع هذا البرنامج التعليمي، ستحتاج إلى:

لهذا البرنامج التعليمي، سنعمل بالحد الأدنى من موارد المعالج والذاكرة اللازمة لتشغيل إلستيك سيرتش. يرجى ملاحظة أن كمية المعالج والذاكرة والتخزين اللازمة لخادم إلستيك سيرتش الخاص بك تعتمد على حجم السجلات التي تتوقعها.

الخطوة 1 — تثبيت وتكوين Elasticsearch

المكونات المتعلقة بـ Elasticsearch غير متوفرة في مستودعات الحزم الافتراضية لـ Ubuntu. ومع ذلك، يمكن تثبيتها باستخدام APT بعد إضافة قائمة مصادر حزم Elastic.

تم توقيع جميع الحزم بمفتاح التوقيع الخاص بـ Elasticsearch لحماية نظامك من التلاعب بالحزم. ستُعتبر الحزم التي تم التحقق منها باستخدام المفتاح موثوقة من قبل مدير الحزم الخاص بك. في هذه الخطوة، ستقوم بإدخال مفتاح GPG العام لـ Elasticsearch وإضافة قائمة مصادر حزم Elastic لتثبيت Elasticsearch.

للبدء، استخدم cURL، أداة سطر الأوامر لنقل البيانات مع عناوين URL، لاستيراد مفتاح GPG العام لـ Elasticsearch إلى APT. لاحظ أننا نستخدم السمات -fsSL لكتم جميع التقدم والأخطاء المحتملة (باستثناء فشل الخادم) وللسماح لـ cURL بإجراء طلب على موقع جديد في حالة التوجيه. قم بتوجيه الناتج إلى الأمر gpg --dearmor، الذي يحول المفتاح إلى تنسيق يمكن استخدامه من قبل apt للتحقق من الحزم التي تم تنزيلها.

  1. curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg

بعد ذلك، أضف قائمة مصادر Elastic إلى دليل sources.list.d، حيث ستبحث apt عن مصادر جديدة:

  1. echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

الجزء [signed-by=/usr/share/keyrings/elastic.gpg] من الملف يوجه apt لاستخدام المفتاح الذي قمت بتنزيله للتحقق من معلومات مستودع وملفات الحزم Elasticsearch.

ثم، قم بتحديث قوائم الحزم حتى يقرأ APT المصدر الجديد لإيلاستيك:

  1. sudo apt update

ثم قم بتثبيت إيلاستيكسيرتش باستخدام هذا الأمر:

  1. sudo apt install elasticsearch

اضغط Y عندما يُطلب منك تأكيد التثبيت. إذا طُلب منك إعادة تشغيل أي خدمات، اضغط ENTER لقبول القيم الافتراضية والمتابعة. تم تثبيت إيلاستيكسيرتش الآن وهو جاهز ليتم تكوينه.

الخطوة 2 — تكوين إيلاستيكسيرتش

لتكوين إيلاستيكسيرتش، سنقوم بتعديل ملف التكوين الرئيسي الخاص به elasticsearch.yml حيث يتم تخزين معظم خيارات التكوين. يقع هذا الملف في الدليل /etc/elasticsearch.

استخدم محرر النص الذي تفضله لتحرير ملف تكوين إيلاستيكسيرتش. هنا، سنستخدم nano:

  1. sudo nano /etc/elasticsearch/elasticsearch.yml

ملاحظة: ملف التكوين الخاص بإيلاستيكسيرتش بتنسيق YAML، مما يعني أنه يجب علينا الحفاظ على تنسيق الإزاحة. تأكد من عدم إضافة أي مسافات إضافية أثناء تحرير هذا الملف.

يوفر ملف elasticsearch.yml خيارات تكوين لعقدتك، العقدة، المسارات، الذاكرة، الشبكة، الاكتشاف، والبوابة. معظم هذه الخيارات مُعدة مُسبقًا في الملف ولكن يمكنك تغييرها حسب احتياجاتك. لأغراض استعراضنا لتكوين الخادم الفردي، سنقوم بتعديل الإعدادات فقط لمضيف الشبكة.

يستمع Elasticsearch إلى حركة المرور من أي مكان على منفذ 9200. سترغب في تقييد الوصول الخارجي إلى مثيل Elasticsearch الخاص بك لمنع الأشخاص الخارجيين من قراءة بياناتك أو إيقاف تشغيل مجموعة Elasticsearch الخاصة بك من خلال [واجهة برمجة التطبيقات بنمط النقل] (https://en.wikipedia.org/wiki/Representational_state_transfer). لتقييد الوصول وبالتالي زيادة الأمان، ابحث عن السطر الذي يحدد network.host، ألغ تعليقه، واستبدل قيمته بـ localhost بحيث يصبح كالتالي:

/etc/elasticsearch/elasticsearch.yml
. . .
# ---------------------------------- شبكة -----------------------------------
#
# قم بتحديد عنوان الربط إلى عنوان IP محدد (IPv4 أو IPv6):
#
network.host: localhost
. . .

لقد حددنا localhost حتى يستمع Elasticsearch على جميع الواجهات والعناوين IP المرتبطة. إذا كنت تريد أن يستمع فقط على واجهة معينة، يمكنك تحديد عنوان IP الخاص بها بدلاً من localhost. احفظ وأغلق elasticsearch.yml. إذا كنت تستخدم nano، يمكنك القيام بذلك عن طريق الضغط على CTRL+X، تلوها Y وبعد ذلك ENTER .

هذه هي الإعدادات الدنيا التي يمكنك البدء بها لاستخدام Elasticsearch. الآن يمكنك بدء تشغيل Elasticsearch للمرة الأولى.

ابدأ خدمة Elasticsearch باستخدام systemctl. امنح Elasticsearch بعض الوقت للبدء. وإلا، قد تحصل على أخطاء حول عدم القدرة على الاتصال.

  1. sudo systemctl start elasticsearch

بعد ذلك، قم بتشغيل الأمر التالي لتمكين Elasticsearch من البدء في كل مرة يتم فيها تشغيل الخادم الخاص بك:

  1. sudo systemctl enable elasticsearch

مع تمكين Elasticsearch عند بدء التشغيل، دعنا ننتقل إلى الخطوة التالية لمناقشة الأمان.

الخطوة 3 — تأمين Elasticsearch

افتراضيًا، يمكن التحكم في Elasticsearch من قبل أي شخص يمكنه الوصول إلى واجهة برمجة التطبيقات HTTP. هذا ليس دائمًا مخاطر أمانية لأن Elasticsearch يستمع فقط على واجهة الحلقة الظاهرية (أي 127.0.0.1)، والتي يمكن الوصول إليها محليًا فقط. وبالتالي، لا يمكن الوصول العام وطالما أن جميع مستخدمي الخادم موثوق بهم، فقد لا يكون الأمان مصدر قلق رئيسيًا.

إذا كنت بحاجة إلى السماح بالوصول عن بُعد إلى واجهة برمجة التطبيقات HTTP، يمكنك تقييد التعرض للشبكة باستخدام جدار الحماية الافتراضي في Ubuntu، UFW. يجب أن يكون هذا الجدار ممكَّنًا بالفعل إذا متبعت الخطوات في البرنامج التعليمي إعداد الخادم الأولي باستخدام Ubuntu 22.04.

سنقوم الآن بتكوين جدار الحماية للسماح بالوصول إلى منفذ واجهة برمجة التطبيقات HTTP الافتراضي لـ Elasticsearch (TCP 9200) للمضيف البعيد الموثوق به، وهو عادة الخادم الذي تستخدمه في إعداد الخادم الفردي، مثل198.51.100.0. للسماح بالوصول، اكتب الأمر التالي:

  1. sudo ufw allow from 198.51.100.0 to any port 9200

بمجرد الانتهاء من ذلك، يمكنك تمكين UFW بالأمر التالي:

  1. sudo ufw enable

وأخيرًا، قم بفحص حالة UFW باستخدام الأمر التالي:

  1. sudo ufw status

إذا كنت قد حددت القواعد بشكل صحيح، يجب أن تتلقى إخراجًا مثل هذا:

Output
Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

يجب الآن أن يكون UFW ممكَّنًا ومُعدًا لحماية منفذ Elasticsearch 9200.

إذا كنت ترغب في الاستثمار في حماية إضافية، يقدم Elasticsearch الإضافة التجارية Shield plugin للشراء.

الخطوة 4 — اختبار Elasticsearch

حاليًا، يجب أن يكون Elasticsearch يعمل على البورت 9200. يمكنك اختباره باستخدام cURL وطلب GET.

  1. curl -X GET 'http://localhost:9200'

يجب أن تتلقى الاستجابة التالية:

Output
{ "name" : "elastic-22", "cluster_name" : "elasticsearch", "cluster_uuid" : "DEKKt_95QL6HLaqS9OkPdQ", "version" : { "number" : "7.17.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a", "build_date" : "2022-02-23T22:20:54.153567231Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

إذا تلقيت استجابة مشابهة لتلك المذكورة أعلاه، فإن Elasticsearch يعمل بشكل صحيح. إذا لم يكن الأمر كذلك، تأكد من أنك قمت باتباع تعليمات التثبيت بشكل صحيح وأنك قد أتاحت بعض الوقت لبدء Elasticsearch بالكامل.

لإجراء فحص أكثر دقة لـ Elasticsearch، قم بتنفيذ الأمر التالي:

  1. curl -X GET 'http://localhost:9200/_nodes?pretty'

في الناتج من الأمر السابق يمكنك التحقق من جميع الإعدادات الحالية للعقدة والمجموعة ومسارات التطبيق والوحدات النمطية، والمزيد.

الخطوة 5 — استخدام Elasticsearch

لبدء استخدام Elasticsearch، دعنا نضيف بعض البيانات أولاً. يستخدم Elasticsearch واجهة برمجة تطبيقات RESTful، التي تستجيب لأوامر CRUD العادية: create، read، update، و delete. للعمل معها، سنستخدم مرة أخرى أمر cURL.

يمكنك إضافة إدخالك الأول كما يلي:

  1. curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

يجب أن تتلقى الاستجابة التالية:

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

مع cURL، قمنا بإرسال طلب POST HTTP إلى خادم Elasticsearch. كانت عنوان URI للطلب /tutorial/helloworld/1 مع عدة معلمات:

  • tutorial هو مؤشر البيانات في Elasticsearch.
  • helloworld هو النوع.
  • 1 هو معرف إدخالنا تحت المؤشر والنوع أعلاه.

يمكنك استرداد هذا الإدخال الأول بطلب HTTP GET.

  1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1'

يجب أن يكون هذا الإخراج الناتج:

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

لتعديل إدخال موجود، يمكنك استخدام طلب HTTP PUT.

  1. curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
  2. {
  3. "message": "Hello, People!"
  4. }'

يجب على Elasticsearch أن يعترف بنجاح التعديل مثل هذا:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }

في المثال أعلاه، قمنا بتعديل message للإدخال الأول إلى “مرحبا، يا ناس!”. بذلك، تم زيادة رقم الإصدار تلقائيًا إلى 2.

قد لاحظت الوسيطة الإضافية pretty في الطلب أعلاه. يتيح هذا التنسيق قابلية القراءة للإنسان حتى تتمكن من كتابة كل حقل بيانات في صف جديد. يمكنك أيضًا “تجميل” نتائجك عند استرداد البيانات للحصول على إخراج أكثر قابلية للقراءة عن طريق إدخال الأمر التالي:

  1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

الآن سيتم تنسيق الاستجابة لتتمكن الإنسان من تحليلها:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "message" : "Hello, People!" } } }

لقد أضفنا الآن البيانات واستعلمنا في Elasticsearch. لمعرفة المزيد عن العمليات الأخرى يرجى التحقق من وثائق الواجهة البرمجية.

الختام

لقد قمت الآن بتثبيت وتكوين وبدء استخدام Elasticsearch. لمزيد من استكشاف وظائف Elasticsearch، يرجى الرجوع إلى وثائق Elasticsearch الرسمية.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-ubuntu-22-04