در Elasticsearch دادهها به شکل سند (Document) ذخیره میشوند و هر سند در یک ایندکس (Index) قرار میگیرد. دادهها به صورت JSON ذخیره میشوند و این باعث میشود که دادهها نیمهساختاریافته یا بدون اسکیمای مشخص هم قابل مدیریت باشند.
وقتی دادهای در Elasticsearch ذخیره میشود، ابتدا به کمک موتور Lucene پردازش و ایندکسگذاری میشود. در این فرایند متنها به اجزای کوچکتر (Token) شکسته میشوند و در یک ساختار معکوس (Inverted Index) ذخیره میشوند. این ساختار باعث میشود جستجو در حجم زیادی از دادهها بسیار سریع انجام گیرد.
مثال ذخیرهسازی یک سند
POST /products/_doc/1
{
"name": "Laptop",
"brand": "Dell",
"price": 2500,
"available": true
}
در این مثال، سندی با شناسه ۱ در ایندکس products
ذخیره شده است. فیلدهای مختلف مانند name
، brand
و price
به صورت خودکار ایندکس میشوند.
مثال جستجوی دادهها
برای جستجو در Elasticsearch از زبان پرسوجوی خاصی به نام Query DSL استفاده میشود. یک نمونه جستجو برای یافتن لپتاپهای برند Dell:
GET /products/_search
{
"query": {
"match": {
"brand": "Dell"
}
}
}
نتیجه جستجو شامل تمام اسنادی خواهد بود که فیلد brand
آنها شامل عبارت "Dell" باشد.
ساختار کلی ذخیره و جستجو
مرحله | توضیح |
---|---|
ذخیره سند | ارسال داده JSON به ایندکس موردنظر با استفاده از متد POST یا PUT . |
ایندکسگذاری | دادهها به کمک Lucene پردازش و به یک ساختار معکوس تبدیل میشوند. |
جستجو | با استفاده از Query DSL دادهها با سرعت بالا در ایندکسها جستجو میشوند. |
این فرایند باعث میشود Elasticsearch به ابزاری قدرتمند برای جستجوی سریع و تحلیل دادهها تبدیل شود.