نمونه جستجوی Full-text و فیلتر با Query DSL

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/06/26
  • تعداد بازدید: 1

در Elasticsearch می‌توان جستجوی تمام‌متنی (Full-text search) را با فیلترهای دقیق ترکیب کرد تا نتایج دقیق‌تر و مرتبط‌تر دریافت شود. برای این کار از Query DSL استفاده می‌کنیم.

مثال: جستجوی محصول بر اساس متن و فیلتر برند و محدوده قیمت


GET /products/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "Laptop"
          }
        }
      ],
      "filter": [
        {
          "term": {
            "brand.keyword": "Dell"
          }
        },
        {
          "range": {
            "price": {
              "gte": 2000,
              "lte": 3000
            }
          }
        }
      ]
    }
  }
}

توضیح ساختار

  • must: شرایط جستجوی متن که باید در سند وجود داشته باشد. در اینجا نام محصول شامل "Laptop" است.
  • filter: فیلترهایی که بدون تأثیر بر امتیاز (score) نتایج اعمال می‌شوند. در این مثال برند دقیقاً "Dell" و قیمت بین 2000 تا 3000 است.

نمونه نتیجه خروجی


{
  "hits": {
    "total": 2,
    "hits": [
      {
        "_id": "1",
        "_source": {
          "product_id": 1,
          "name": "Laptop Pro 15",
          "brand": "Dell",
          "price": 2500.50,
          "available": true
        }
      },
      {
        "_id": "3",
        "_source": {
          "product_id": 3,
          "name": "Laptop Air 13",
          "brand": "Dell",
          "price": 2200.00,
          "available": true
        }
      }
    ]
  }
}

با استفاده از ترکیب Full-text search و filter، می‌توان جستجوی پیشرفته و دقیق در Elasticsearch انجام داد و نتایج مرتبط و بهینه دریافت کرد.

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.