تعدادی اصطلاح در elasticsearch وجود دارد که دانستن آنها در ابتدا به فرایند یادگیری بسیار کمک میکند.
Near Realtime (NRT)
elasticsearch یک بستر جستجوی نزدیک به زمان واقعی است، به این معنی که از زمان شاخص گذاری یک سند تا قابلیت جستجو در آن تاخیر کمی وجود دارد(معمولا یک ثانیه).
cluster
یک cluster مجموعه ای از یک یا چند node است(server) که با هم تمام اطلاعات را نگه داشته و شاخص گذاری و قابلیت جستجو را در بین تمام node فراهم میکنند.
node
یک node یک server تکی و قسمتی از cluster میباشد. که در ذخیره سازی داده های خود و شاخص گذای و فراهم کردن قابلیت جستجو شرکت میکند.
index
یک index مجموعه ای از document است که تا حدودی دارای ویژگی های مشابهی هستند، به عنوان مثال شما میتوانید یک index برای اطلاعات مشتریان، یک index از فهرست محصولات و یک index از اطلاعات سفارشات داشته باشید.
index به وسیله ی نام خود شناخته میشود، که باید حروف لاتین کوچک باشد. این نام در زمان شاخص گذاری، جستجو، ویرایش و حذف مورد استفاده قرار میگیرد.
در یک cluster تکی شما میتوانید هر چقدر index نیاز دارید تعریف کنید.
types
داخل index شما میتوانید یک یا چند type تعریف کنید. میتوان گفت type ها دسته بندی های ما داخل index ها هستند. به عنوان مثال فرض کنید در حال راه اندازی یک بستر وبلاگ نویسی هستیم و تمام اطلاعات خود را در یک index با عنوان blogging ذخیره میکنیم. در این index میتوانیم یک type برای اطلاعات کاربر، یک type برای مطالب و یک type هم برای نظرات داشته باشیم.
document
یک document واحد اصلی اطلاعات است که میتواند شاخص گذاری شود. شما میتوانید یک document برای یک مشتری داشته باشید و همچنین یک document برای یک محصول و یک document هم برای یک سفارش. document ها در قالب json قابل استفاده هستند.
Shards & Replicas
در یک index میتوان اطلاعات زیادی را ذخیره کرد که این اندازه بیشتر از محدودیت node باشد. به عنوان مثال یک index شامل یک بیلیون document که بیشتر از 1TB فضای ذخیره سازی نیاز دارد. ممکن است یک node چنین فضایی نداشته یا ذخیره سازی این اطلاعات در یک node باعث شود تا به تنهایی نتواند به حجم درخواست های جستجو پاسخ دهد.
برای حل این مساله elasticsearch قابلیت طبقه بندی کردن index را به قطعات متعددی با عنوان shards فراهم میکند. shard کاملا مستقل است و میتواند در هر node داخل cluster قرار گیرد.
shards به دو دلیل مهم است
1) اجازه میدهد تا حجم محتوای خود را تقسیم کنید.
2) اجازه توزیع شدن و انجام عملیات به صورت موازی بین shard ها فراهم میشود.
در یک محیط شبکه شکست یا خطا میتواند در هر لحظه اتفاق بیوفتد و بسیار مفید و توصیه شده است که یک مکانیزم عدم موفقیت برای مدیریت مواقعی که به هر دلیلی shard/node از بین رفت داشته باشیم. به این منظور elasticsearch اجازه میدهد یک یا چند کپی از index’s shards بسازید که به آن replicas گفته میشود.
replicas به دو دلیل مهم است
1) پایداری بالا در هنگام بروز خطا در یک shard/node فراهم میشود. به این دلیل باید بدانید که یک replica به همان node که نسخه اصلی shard داخلش قرار دارد اختصاص داده نمیشود.
2) افزایش توان عملیاتی جستجو چون میتواند روی replica جستجو خود را انجام دهد.