Skip to content

Commit

Permalink
[Elasticsearch] [Author] Markdown Cleanup
Browse files Browse the repository at this point in the history
* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md
  • Loading branch information
AlirezaT99 authored Feb 2, 2021
1 parent 0728960 commit c23132e
Showing 1 changed file with 39 additions and 40 deletions.
79 changes: 39 additions & 40 deletions Elasticsearch/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,19 @@
<p align=center><img width=300 src="./assets/Elastic_logo_main.png" /></p>

### 📝فهرست
- [مقدمه](##مقدمه)
- [Elastic Stack (ELK)](ٍ##Elastic-Stack-(ELK))
- [مزایا](##مزایا)
- توزیع‌شدگی و مقیاس‌پذیری
- امکانات نرمال‌سازی
- [امکان ذخیره‌ی انواع مختلف داده‌ها](##امکان-ذخیره‌ی-انواع-مختلف-داده‌ها)
- امکانات جستجوی پیشرفته
- معرفی برخی اصطلاحات
- [نصب و راه‌اندازی](##نصب-و-راه‌اندازی)
- [بارگذاری اسناد](##بارگذاری-اسناد)
- [گریزی به مبحث Mapping](##گریزی-به-مبحث-Mapping)
- [نگاشت پویا (Dynamic mapping)](##Dynamic-Field-Mapping)
- [انواع مختلف Query](##انواع-مختلف-Query)
- [آنالیز متن](##آنالیز-متن)
- پرسش‌های تجمیعی
- [آشنایی با bulk](##Bulk-API)
- [منابع](##منابع)
- [مقدمه](#مقدمه)
- [Elastic Stack (ELK)](#Elastic-Stack)
- [مزایا](#مزایا)
- [مقیاس‌پذیری](#مقیاس-پذیری)
- [معرفی برخی اصطلاحات](#معرفی-برخی-اصطلاحات)
- [نصب و راه‌اندازی](#نصب-و-راه-اندازی)
- [بارگذاری اسناد](#بارگذاری-اسناد)
- [امکان ذخیره‌ی انواع مختلف داده‌ها](#امکان-ذخیره-انواع-مختلف-داده)
- [گریزی به مبحث Mapping](#گریزی-به-مبحث-Mapping)
- [انواع مختلف Query](#انواع-مختلف-Query)
- [آشنایی با bulk](#Bulk-API)
- [آنالیز متن](#آنالیز-متن)
- [منابع](#منابع)

### ✍️نویسندگان
- [علیرضا تاجمیرریاحی](https://github.com/AlirezaT99)
Expand All @@ -31,18 +27,18 @@

## مقدمه
Elastic Search
یک موتور جست‌و‌جو و آنالیز توزیع‌شده است که از پروتوکل
یک موتور جست‌و‌جو و آنالیز توزیع‌شده است که از پروتکل
REST
استفاده می‌کند.
ویژگی‌های مثبت و اصلی این سرویس قدرت جست‌وجو و همچنین مقیاس‌پذیری آن است.

## Elastic Stack (ELK)
## Elastic Stack
Elastic Stack یا همان ELK در واقع ۳ حرف اول
۳ پروژه open source
با نام‌های elasticsearch و log stash و kibana هستند.

elasticsearch که همان طور که توضیح دادیم یک موتور جست‌وجو و آنالیز است.
logstash یک pipline هست که در سمت سرور، داده‌ها را پردازش می‌کند،
logstash یک pipeline هست که در سمت سرور، داده‌ها را پردازش می‌کند،
تبدیل می‌کند و سپس به سمت به سرویسی مانند elasticsearch می‌فرستد.
kibana هم سرویسی هست که کاربر به وسیله آن می‌تواند داده‌ها را به صورت گرافیکی نمایش دهد.

Expand All @@ -51,7 +47,7 @@ kibana هم سرویسی هست که کاربر به وسیله آن می‌تو
## مزایا
از مزایای elasticsearch می‌توان به موارد زیر اشاره کرد:
- گزینه‌های مختلف جست‌وجو: elasticsearch گزینه‌های خاص و زیادی برای جست‌و‌جو در اختیار ما قرار می‌دهد. به عنوان مثال اگر کاربر کلمه اشتباهی را جست‌وجو کند، می‌توان کلماتی که تا حدی شبیه به آن هستند را نیز برگردانیم. یا مثلا با توجه به عبارت ناقص نوشته شده، به کاربر عبارتی که احتمالا دنبال هست را پیشنهاد ارائه بدهیم (مانند جست‌وجو در google).
- سند گرا (docoment oriented):
- سند گرا (document oriented):
این سرویس داده‌ها را، حتی با فرمت‌های پیچیده، به فرمت JSON ذخیره می‌کند.
- سرعت بالا: سرعت بالا در پاسخ‌دهی به query ها یکی دیگر از مزایای این سرویس هست.
همچنین query های بیش‌تر استفاده شده، توسط خود آن cache هم می‌شوند که باعث بهبود عملکرد کلی می‌شود.
Expand All @@ -66,14 +62,14 @@ kibana هم سرویسی هست که کاربر به وسیله آن می‌تو
هر index می‌تواند به
shard های کوچک‌تری تقسیم شود
و همچنین هر کدام از این‌ها هم می‌توانند هر چند تعداد کپی از خود داشته باشند.
همچنین routing و متعادل‌سازی هم هر دفعه که docomuent جدیدی اضافه می‌شود به طور خودکار انجام می‌شود.
همچنین routing و متعادل‌سازی هم هر دفعه که document جدیدی اضافه می‌شود به طور خودکار انجام می‌شود.
- جلوگیری از زیادشدن index ها:
وقتی چندین کاربر داریم، برای این‌ که هرکدام فقط به فقط document های خود دسترسی داشته باشد،
مجبور هستیم برای هر یک، یک index تعریف کنیم که می‌تواند موجب زیاد شدن تعداد
index ها شود.
در مقابل index خود elasticsearch که بزرگ‌تر هست ولی فقط یکی است، گزینه بهتری است.

## مقیاسپذیری
## مقیاس پذیری

Elasticsearch به گونه‌ای ساخته شده که همواره در دسترس باشد و در صورت نیاز مقایسش تغیییر کند که این کار با توجه به اینکه ES در ذات توزیع شده می‌باشد امکان پذیر است. به این صورت که می‌توان به راحتی nodeهایی را به clusterها اضافه کرد و خود Elasticsearch این نود‌های اضافه شده را کنترل می‌کند و داده‌ها و درخواست‌ها را به صورت خودکار بر روی آن‌ها پخش می‌کند.

Expand All @@ -84,7 +80,7 @@ Elasticsearch به گونه‌ای ساخته شده که همواره در دس
- index: در Elasticsearch سند‌های مشابه به هم دیگر در مخزن‌هایی نزدیکه به نگهداری می‌شوند تا دسترسی به داده‌ها سریع‌تر شود. به این مخزن‌ها index می‌گویند
- shard: همانطور که گفته شد ES داده‌ها را در مخزن‌هایی نگهداری می‌کند حال از آنجایی که این مخزن‌ها ممکن است بر روی سرو‌ر‌های متفاوت توزیع شود به بخش‌های کوچک‌تری به نام shard تقسیم می‌شوند و این شارد‌ها به صورت متوازن بر روی سرور‌های در اختیاز مخزن پخش می‌شوند. همچنین ممکن است بر حسب اهمیت شارد‌ها داده‌هایی را در چند شارد کپی کند تا با از دست رفتن یک شارد همه‌ی داده‌ها از دست نروند.

## نصب و راهاندازی
## نصب و راه اندازی
در این بخش به بررسی نحوه‌ی راه‌اندازی elasticsearchو kibana خواهیم پرداخت.
<br>
ابتدا از
Expand Down Expand Up @@ -224,7 +220,7 @@ nostrum rerum est autem sunt rem eveniet architecto"""
</div>
حال آماده‌ایم تا با نحوه‌ی پیاده‌سازی انواع Query بیشتر آشنا شویم اما پیش از آن خوب است گریزی به مبحث mapping بزنیم.

## امکان ذخیره‌ی انواع مختلف داده‌ها
## امکان ذخیره انواع مختلف داده
یکی از ویژگی‌های خوب elasticsearch توانایی کار با داده ساختار (data structure)
های متنوع است. از این انواع می‌توان به IP, histogram, Array و ... اشاره کرد.
توصیه می‌شود برای آشنایی با این انواع گوناگون و انتخاب آن چه نیاز دارید، به
Expand Down Expand Up @@ -323,16 +319,6 @@ GET /sample-posts/_mapping
```
</div>

برای مطالعه‌ی بیشتر در مورد mapping ها
[این لینک](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html)
می‌تواند مفید باشد.
<br>

همچنین برای مشاهده‌ی سایر انواع داده در Field ها (علاوه بر متن، عدد و ...) می‌توانید
[اینجا](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html)
را مطالعه کنید.

## Dynamic Mapping
یکی از مهم‌ترین ویژگی‌های Elasticsearch این است که برای index کردن یک document نیازی نیست که حتما اول index ساخته شود و نوع نگاشت تعریف شود و قیلد‌ها معرفی شوند. می‌توان مستقیم document را index کرد تا نوع نگاشت و فیلد‌ها و index به صورت اتوماتیک ساخته شوند.
### Dynamic Field Mapping
به صورت پیشفرض زمانی که یک فیلد جدید که قبلا دیده نشده در document وجود دارد، Elasticsearch این فیلد را به نگاشت typeها اضافه می‌کند. این رفتار می‌تواند با `false` کردن مقدار فیلد dynamic غیر فعال شود. لازم به ذکر است با انجام دادن این کار فیلد‌های جدید چشم‌پوشی می‌شوند و به نگاشت اضافه نمی‌شوند. همچنین می‌توان مقدار این فیلد را برابر با `strict` قرار داد تا در صورت مشاهده‌ی فیلد جدید با ارور مواجه شویم.
Expand Down Expand Up @@ -493,6 +479,16 @@ PUT my-index-000001/_doc/1

اگر این مورد فعال باشد در صورتی که یک عدد به صورت رشته‌ای در document قرار داشته باشد این فیلد به صورت اتوماتیک تبدیل می‌شود البته راه درست این است که از دستی برای فیلد مشخص کنیم که باید تبدیل به عدد شود و این کار اتوماتیک انجام نشود.

برای مطالعه‌ی بیشتر در مورد mapping ها
[این لینک](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html)
می‌تواند مفید باشد.
<br>

همچنین برای مشاهده‌ی سایر انواع داده در Field ها (علاوه بر متن، عدد و ...) می‌توانید
[اینجا](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html)
را مطالعه کنید.
<br>

## انواع مختلف Query

در این بخش با ارائه‌ی چند مثال، با امکانات گسترده‌ی Elasticsearch در ارتباط با بازیابی اسناد بیشتر آشنا می‌شویم.
Expand Down Expand Up @@ -692,9 +688,6 @@ id را.
را بخوانید.

## آنالیز متن
برای مطالعه بیش‌تر می‌توانید به
[این جا](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-overview.html)
مراجعه کنید.

به طور کلی، بدین معناست که می‌خواهید در یک متن، دنبال خود یک عبارت یا عبارتی شبیه به آن (از نظر معنایی یا نوشتاری یا ...) بگردید.
مثلا اگر عبارت quick fox jumps
Expand All @@ -709,8 +702,14 @@ The quick brown fox leaps
، در نهایت این token ها را به یک فرم استاندارد نرمالایز می‌کند. این باعث می‌شود تا کلمات شبیه به هم با یکدیگر،
match شوند.

برای مطالعه بیش‌تر می‌توانید به
[این جا](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-overview.html)
مراجعه کنید.
<br>

## منابع
- Elasticsearch Documentation
- مستندات آکادمی ستاره
- [Elasticsearch Documentation](https://www.elastic.co/guide/index.html)
- [dzone.com](https://dzone.com/articles/elastic-search-advantages-case-studies-amp-books)
- مستندات آکادمی ستاره

</div>

0 comments on commit c23132e

Please sign in to comment.