آموزش ديتابيس مونگو و الستيك سرچ- MongoDB & Elasticsearch tutorial
240 subscribers
18 photos
به صورت كاربردي نحوه كار و استفاده از MongoDb و Elasticsearch رو ياد خواهيد گرفت.

No-SQL
MongoDB
Elasticsearch


ارتباط با من:

@RzaMlk7
Download Telegram
پس از انتخاب گزينه مورد نظر و پاسخگويي به هر آزمون، جواب صحيح با توضيحات براي آن شخص
نمايش داده مي شود.

همچنين پاسخ دهي به آزمون به صورت Anonymous مي باشد.
آموزش ديتابيس مونگو و الستيك سرچ- MongoDB & Elasticsearch tutorial pinned « پس از انتخاب گزينه مورد نظر و پاسخگويي به هر آزمون، جواب صحيح با توضيحات براي آن شخص نمايش داده مي شود. همچنين پاسخ دهي به آزمون به صورت Anonymous مي باشد.»
آيا آموزش و نكات كاربردي ديتابيس Elastic Search هم ارايه شود؟
Final Results
83%
بله، Elastic Search هم باشه.
17%
نه، فقط Mongo باشه.
Channel name was changed to «آموزش ديتابيس مونگو و الستيك سرچ- MongoDB & Elasticsearch tutorial»
ELK Stack

🔹 واژه ELK بر گرفته از سرنام سه ماژول Logstash، Elasticsearch و Kibana می باشد.

🔹E= Elasticsearch
انجینی جهت ذخيره سازي،جستجو، آنالیز و ایندکس کردن داده ها می باشد که بر روی Apache Solr توسعه یافته است.

🔹L=Logstash
ابزاری open-source جهت جمع آوری داده ها از منابع مختلف (نظیر kafka، TCP Socket، RDBMS، Redis، syslog و ...) و انتقال به
مقصد مورد نظر می باشد.

این قابلیت وجود دارد تا هنگام فرآیند انتقال، تبدیل و تغییر فرمت داده ها (transform) نیز انجام گیرد.

🔹K=Kibana
ابزاری جهت ویژوالایز و ایجاد داشبورد های مختلف می باشد که از آن جهت مدیریت، تجزیه و تحلیل، مانیتورینگ بر اساس متریک های مختلف و ... بر روی داده های موجود در Elasticsearch استفاده می شود.
👇
1
Elasticsearch

🔹مفهوم Fuzzy Matching :
در الستيك سرچ اين امكان وجود دارد تا جستجوي كلمات بر اساس درصد مشابهت و به صورت فازي انجام شود.

🔹نزديكي تشابه لغات را Distance Levenshtein نيز مي نامند.

🔹 ا Levenshtein Distance اشاره به تعداد ویرایش های تک کاراکتری (درج، حذف یا جایگزینی) مورد نیاز برای تغییر یک کلمه به کلمه دیگر است.( اين تئوري توسط اقاي ولادمير ولشتاين روسي در سال ١٩٦٥ بيان شد)

🔹مثال:
▪️جايگزيني يك كاراكتر
(box → fox)

▪️حذف يك كاراكتر
(black → lack)

▪️درج يك كاراكتر
(sic → sick)

▪️جابه جايي دو كاراكتر
(act → cat)
🔹قابليت Fuzzy Matching در الستيك سرچ اين امكان را نيز مي دهد تا جستجو به صورت misspelling نيز محقق شود.

🔹براي نمونه فرض كنيد كاربري مي خواهد نام عليرضا را جستجو كند و در ديتابيس ركوردها به صورت زير ذخيره شده اند:

▪️ركورد١: عليرضا
▪️ركورد٢: علي رضا

با بهره گيري از قابليت Fuzzy Matching, هر دو ركورد به كاربر نمايش داده مي شود.
👍2
آموزش ديتابيس مونگو و الستيك سرچ- MongoDB & Elasticsearch tutorial pinned «🔹قابليت Fuzzy Matching در الستيك سرچ اين امكان را نيز مي دهد تا جستجو به صورت misspelling نيز محقق شود. 🔹براي نمونه فرض كنيد كاربري مي خواهد نام عليرضا را جستجو كند و در ديتابيس ركوردها به صورت زير ذخيره شده اند: ▪️ركورد١: عليرضا ▪️ركورد٢: علي رضا با…»
🛃 آزمون
جهت محقق كردن نيازمندي دسترس پذيري بالا در ديتابيس مونگو، از كدام قابليت مي بايست استفاده نمود؟
Anonymous Quiz
46%
Replica Set
54%
Sharding
0%
هيچكدام
Elasticsearch

🔹 پس از نصب الستيك سرچ، دايركتوري هايي در مسير نصب ايجاد مي شوند، كه بايد از محتويات آن ها به جهت پيكربندي، اشكال زدايي، نگهداشت و … آگاه بود.
👇
Elasticsearch

🔹فايل elasticsearch.yml:
اين فايل در دايركتوري /config قرار دارد.

🔹به جهت پيكربندي و انجام تنظيمات مورد نياز بر روي يك نود الستيك سرچ مورد استفاده قرار مي گيرد.
👇
MongoDB

🔹با استفاده از دو ابزار mongodump و mongoexport مي توان از ديتابيس مونگو بك آپ تهيه نمود.

🔹ابزار mongodump:
بك آپ را به صورت باينري فايل ايجاد مي نمايد.

🔹ابزار mongoexport:
بك آپ را به صورت json يا csv ايجاد مي نمايد.
Elasticsearch: N-gram


🔹مفهوم N-gram در الستيك سرچ به مدل ايندكس كردن يك واژه با شكست آن به كاراكتر هاي تشكيل دهنده اشاره دارد.

🔹براي نمونه، براي ايندكس كردن هر دو كاراكتر كنار هم بايد gram-2 استفاده شود و به همين ترتيب …

🔹 در انتخاب تعداد gram ها بايد دقت نمود، به دليل اينكه در رشد نمايي داده ها ، ميزان محاسبات و استفاده از منابع تاثير مستقيم دارد.

🔹 از جمله كاربردهاي استفاده از آن، در بهينه سازي مدل هاي جستجو مبتني بر suggestion مي باشد.

🔹مانند جستجو در سايت booking براي جستجوي هتل، شهر و … كه با وارد كردن تعدادي كاراكتر توسط كاربر، سيستم واژه هايي را به كاربر پيشنهاد مي دهد.

🔹همچنين در جستجو بهتر در زبان هايي مانند آلماني، كه يك واژه از تركيب چندين لغت تشكيل شده است.
👇
MongoDB: Aggregation Stages

🔹دستور unwind:از اين دستور جهت فلت كردن يك آرايه درون يك داكيومنت استفاده مي شود

🔹فرم Prototype آن به صورت زیر می باشد

{ $unwind: { path: <field path> , includeArrayIndex:<string>} })

مقدار path بيانگر نام فيلد حاوي آرايه مي باشد و مقدار includeArrayIndex نام فيلد جديد بعد از عمليات unwind مي باشد.

👇
مثال:
🔹داكيومنت موجود در كالكشن inventory به صورت زير مي باشد:

db.inventory.insertOne({ "_id" : 1, "item" : "ABC1", sizes: [ "S", "M", "L"] })

دستور unwind را بر روي آن اجرا مي كنيم:

db.inventory.aggregate( [ { $unwind : "$sizes" } ] )


خروجي آن به صورت زير مي باشد:
👇