Elasticsearch امکانات قدرتمندی برای جستجوی دادهها ارائه میدهد. برای درک نحوه جستجو در این سیستم باید با مفاهیم اصلی زیر آشنا شوید:
Full-text search
در جستجوی تماممتنی (Full-text search)، عبارت مورد نظر شما پردازش شده و به اجزای کوچکتر (Token) تقسیم میشود. سپس این اجزا با ساختار معکوس (Inverted Index) مقایسه میشوند. این نوع جستجو برای دادههای متنی و جملات بسیار کاربردی است، چون Elasticsearch علاوه بر تطابق دقیق، تطابق تقریبی و مشابهت معنایی را هم در نظر میگیرد.
GET /articles/_search
{
"query": {
"match": {
"content": "machine learning"
}
}
}
در این مثال، جستجو تمام مقالاتی را برمیگرداند که محتوای آنها شامل عبارت "machine learning" یا کلمات مشابه آن باشد.
Term search
جستجوی Term برای پیدا کردن مقادیر دقیق استفاده میشود. این نوع جستجو بدون آنالیز متن عمل میکند، یعنی دادهها به اجزای کوچکتر شکسته نمیشوند. از این روش معمولاً برای فیلدهای کلیدی مانند شناسه، کد، تاریخ یا مقادیر بولین استفاده میشود.
GET /products/_search
{
"query": {
"term": {
"brand.keyword": "Dell"
}
}
}
در این مثال، فقط اسنادی برگردانده میشوند که مقدار دقیق brand
آنها برابر با "Dell" باشد.
Query DSL
Elasticsearch دارای یک زبان مخصوص برای تعریف کوئریها به نام Query DSL است. این زبان مبتنی بر JSON است و امکانات متنوعی برای ترکیب انواع جستجو، فیلترگذاری، مرتبسازی و تحلیل دادهها در اختیار شما قرار میدهد.
GET /products/_search
{
"query": {
"bool": {
"must": [
{ "match": { "name": "laptop" } }
],
"filter": [
{ "term": { "brand.keyword": "Dell" } },
{ "range": { "price": { "lte": 3000 } } }
]
}
}
}
در این مثال، Query DSL ترکیبی از شرایط مختلف را اجرا میکند: جستجوی لپتاپهایی که برندشان Dell است و قیمت آنها کمتر یا مساوی 3000 میباشد.
مقایسه کلی انواع جستجو
نوع جستجو | ویژگی | کاربرد |
---|---|---|
Full-text search | پردازش و آنالیز متن، پشتیبانی از جستجوی تقریبی | جستجوی مقالات، توضیحات محصولات، محتوای متنی |
Term search | جستجوی دقیق بدون آنالیز متن | شناسهها، تاریخها، کدها و مقادیر بولین |
Query DSL | زبان کامل برای ترکیب انواع جستجو و فیلتر | ساخت کوئریهای پیچیده و حرفهای |
با ترکیب Full-text search، Term search و قابلیتهای Query DSL، Elasticsearch به یکی از قدرتمندترین ابزارها برای جستجو و تحلیل دادهها تبدیل میشود.