Elasticsearch এর বেসিক অপারেশন

Latest Technologies - ইলাস্টিকসার্চ (ElasticSearch) - NCTB BOOK

Elasticsearch-এর বেসিক অপারেশন

Elasticsearch ব্যবহার করে বিভিন্ন ধরনের বেসিক অপারেশন করা যায়, যেমন ডকুমেন্ট ইনডেক্স করা, সার্চ করা, ডকুমেন্ট আপডেট করা, এবং ডকুমেন্ট ডিলিট করা। Elasticsearch RESTful API ব্যবহার করে এই অপারেশনগুলো সম্পন্ন করা হয়। নিচে Elasticsearch-এর বেসিক অপারেশনগুলো বিস্তারিতভাবে আলোচনা করা হলো:

১. ইন্ডেক্স তৈরি করা (Create Index)

  • Elasticsearch-এ ডেটা সংরক্ষণ করার জন্য একটি ইন্ডেক্স তৈরি করতে হয়। প্রতিটি ইন্ডেক্সে ডকুমেন্টগুলো সংরক্ষিত থাকে এবং সার্চ করা যায়।
  • একটি ইন্ডেক্স তৈরি করতে নিচের HTTP PUT রিকোয়েস্ট ব্যবহার করুন:
PUT /my-index
  • এখানে my-index হলো ইন্ডেক্সের নাম। ইন্ডেক্স তৈরি হলে, আপনি acknowledged: true রেসপন্স দেখতে পাবেন।

২. ডকুমেন্ট ইনডেক্স করা (Index a Document)

  • একটি ডকুমেন্ট ইনডেক্স করতে HTTP POST বা PUT রিকোয়েস্ট ব্যবহার করা হয়। নিচে একটি ডকুমেন্ট ইনডেক্স করার উদাহরণ দেওয়া হলো:
POST /my-index/_doc/1
{
  "name": "John Doe",
  "age": 30,
  "occupation": "Software Engineer"
}
  • এখানে:
    • /my-index হলো ইন্ডেক্সের নাম।
    • /_doc/1 হলো ডকুমেন্ট আইডি (1 এখানে ডকুমেন্টের ইউনিক আইডি)।
    • JSON ফরম্যাটে ডকুমেন্টের তথ্য প্রদান করা হয়েছে।
  • সফলভাবে ইনডেক্স হলে, একটি created স্ট্যাটাস সহ রেসপন্স পাওয়া যাবে।

৩. ডকুমেন্ট রিট্রিভ করা (Retrieve a Document)

  • একটি নির্দিষ্ট ডকুমেন্ট রিট্রিভ করতে HTTP GET রিকোয়েস্ট ব্যবহার করা হয়। উদাহরণ:
GET /my-index/_doc/1
  • এটি /my-index ইন্ডেক্সের 1 আইডি সহ ডকুমেন্ট রিট্রিভ করবে এবং সেই ডকুমেন্টের তথ্য JSON ফরম্যাটে রেসপন্স করবে।

৪. ডকুমেন্ট আপডেট করা (Update a Document)

  • Elasticsearch-এ একটি ডকুমেন্ট আপডেট করতে HTTP POST বা PUT রিকোয়েস্ট ব্যবহার করা হয়। উদাহরণ:
POST /my-index/_update/1
{
  "doc": {
    "age": 31
  }
}
  • এখানে:
    • /my-index/_update/1 এর মাধ্যমে 1 আইডি সহ ডকুমেন্ট আপডেট করা হয়েছে।
    • "doc" ফিল্ডের ভেতরে আপডেট করা তথ্য প্রদান করা হয়।

৫. ডকুমেন্ট ডিলিট করা (Delete a Document)

  • একটি ডকুমেন্ট ডিলিট করতে HTTP DELETE রিকোয়েস্ট ব্যবহার করা হয়। উদাহরণ:
DELETE /my-index/_doc/1
  • এটি /my-index ইন্ডেক্সের 1 আইডি সহ ডকুমেন্ট মুছে ফেলবে। সফলভাবে ডিলিট হলে deleted স্ট্যাটাস সহ রেসপন্স পাওয়া যাবে।

৬. ইন্ডেক্স ডিলিট করা (Delete an Index)

  • একটি ইন্ডেক্স ডিলিট করতে HTTP DELETE রিকোয়েস্ট ব্যবহার করুন:
DELETE /my-index
  • এটি my-index নামক ইন্ডেক্সটি ডিলিট করবে। ডিলিট সফল হলে acknowledged: true রেসপন্স আসবে।

৭. ডকুমেন্ট সার্চ করা (Search for Documents)

  • Elasticsearch-এ একটি নির্দিষ্ট টার্ম বা কিওয়ার্ড দিয়ে ডকুমেন্ট সার্চ করতে HTTP GET রিকোয়েস্ট ব্যবহার করা হয়। উদাহরণ:
GET /my-index/_search
{
  "query": {
    "match": {
      "occupation": "Software Engineer"
    }
  }
}
  • এখানে:
    • /my-index/_search ইন্ডেক্সে সার্চ করা হচ্ছে।
    • "query" ফিল্ডে "match" কন্ডিশন ব্যবহার করে "occupation" ফিল্ডে "Software Engineer" টার্মের সাথে মিল খুঁজে বের করা হচ্ছে।
  • সার্চ রেসপন্সে মিলে যাওয়া ডকুমেন্টগুলো JSON ফরম্যাটে রিটার্ন করবে।

৮. ইন্ডেক্সের সেটিংস এবং ম্যাপিং দেখতে (Get Index Settings and Mappings)

  • একটি ইন্ডেক্সের সেটিংস এবং ম্যাপিং দেখতে HTTP GET রিকোয়েস্ট ব্যবহার করুন:
GET /my-index/_settings
GET /my-index/_mapping
  • /my-index/_settings ইন্ডেক্সের কনফিগারেশন এবং /my-index/_mapping ইন্ডেক্সে থাকা ডকুমেন্টের স্ট্রাকচার এবং ডেটা টাইপ দেখাবে।

৯. Bulk অপারেশন (Bulk Operations)

  • Elasticsearch-এ একাধিক ডকুমেন্ট একসাথে ইনডেক্স, আপডেট, বা ডিলিট করার জন্য Bulk API ব্যবহার করা যায়। এটি বড় আকারের ডেটা অপারেশন দ্রুত সম্পন্ন করতে সহায়ক।
  • উদাহরণ:
POST /_bulk
{ "index": { "_index": "my-index", "_id": "2" } }
{ "name": "Jane Doe", "age": 28, "occupation": "Data Scientist" }
{ "delete": { "_index": "my-index", "_id": "1" } }
  • এই উদাহরণে:
    • প্রথম ডকুমেন্ট ইনডেক্স করা হচ্ছে 2 আইডি সহ।
    • দ্বিতীয় অপারেশনে 1 আইডি সহ ডকুমেন্ট ডিলিট করা হচ্ছে।

১০. ক্লাস্টারের স্বাস্থ্য এবং নোডের স্ট্যাটাস দেখা (Check Cluster Health and Node Status)

  • Elasticsearch ক্লাস্টারের স্বাস্থ্য এবং নোডের তথ্য দেখতে HTTP GET রিকোয়েস্ট ব্যবহার করা হয়:
GET /_cluster/health
GET /_nodes
  • /cluster/health ক্লাস্টারের সামগ্রিক স্বাস্থ্য সম্পর্কিত তথ্য দেখাবে, যেমন ক্লাস্টারের স্ট্যাটাস (green, yellow, red), সক্রিয় শার্ডের সংখ্যা, ইত্যাদি।
  • /nodes ক্লাস্টারের নোড সম্পর্কিত তথ্য, যেমন প্রতিটি নোডের নাম, IP, এবং রিসোর্স ব্যবহার দেখাবে।

উপসংহার

Elasticsearch-এর বেসিক অপারেশনগুলো খুব সহজে RESTful API ব্যবহার করে করা যায়। ইন্ডেক্স তৈরি করা, ডকুমেন্ট ইনডেক্স করা, সার্চ করা, আপডেট করা, এবং ডিলিট করার মতো অপারেশনগুলো Elasticsearch-এ দ্রুত এবং কার্যকরভাবে সম্পন্ন করা যায়। Bulk API এবং ক্লাস্টারের স্বাস্থ্য মনিটরিংয়ের মতো অপারেশনগুলো Elasticsearch-এর স্কেলেবিলিটি এবং পারফরম্যান্স নিশ্চিত করতে সহায়ক।

Content added By

Index, Document এবং Mapping কীভাবে তৈরি করবেন

Elasticsearch-এ Index, Document এবং Mapping কীভাবে তৈরি করবেন

Elasticsearch-এ Index ডেটা সংরক্ষণের জন্য একটি লজিক্যাল ডাটাবেস হিসেবে কাজ করে, যেখানে Document গুলো JSON ফরম্যাটে সংরক্ষিত থাকে। Mapping হলো ডকুমেন্টের ফিল্ডের স্ট্রাকচার এবং ডেটা টাইপ নির্ধারণ করার জন্য ব্যবহৃত একটি পদ্ধতি, যা Elasticsearch-কে ডেটা ইন্ডেক্স এবং সার্চ করতে সহায়ক করে। নিচে Elasticsearch-এ Index, Document এবং Mapping তৈরি করার ধাপগুলো বিস্তারিতভাবে আলোচনা করা হলো:

১. Index তৈরি করা (Create Index)

  • Elasticsearch-এ ডেটা সংরক্ষণ করতে একটি ইন্ডেক্স তৈরি করতে হয়। একটি ইন্ডেক্স তৈরি করার জন্য HTTP PUT রিকোয়েস্ট ব্যবহার করা হয়।
  • উদাহরণ:
PUT /my-index
  • এখানে:
    • /my-index হলো ইন্ডেক্সের নাম।
  • সফলভাবে ইন্ডেক্স তৈরি হলে acknowledged: true সহ একটি রেসপন্স দেখা যাবে।

ইন্ডেক্স তৈরির সময় কাস্টম সেটিংস প্রয়োগ করা

  • ইন্ডেক্স তৈরির সময় শার্ড এবং রেপ্লিকা সংখ্যা নির্ধারণ করতে পারেন:
PUT /my-index
{
 "settings": {
   "number_of_shards": 3,
   "number_of_replicas": 1
 }
}
  • এখানে:
    • number_of_shards: ইন্ডেক্সের প্রাইমারি শার্ডের সংখ্যা।
    • number_of_replicas: প্রতিটি প্রাইমারি শার্ডের রেপ্লিকা সংখ্যা।

২. Mapping তৈরি করা (Create Mapping)

  • Mapping হলো ডকুমেন্টের ফিল্ড এবং তাদের ডেটা টাইপ নির্ধারণ করার একটি পদ্ধতি, যা Elasticsearch-কে ডেটা ইন্ডেক্স এবং সার্চ করতে সহায়ক করে।
  • ইন্ডেক্স তৈরির সময় অথবা পরে Mapping নির্ধারণ করা যায়।

ইন্ডেক্স তৈরির সময় Mapping নির্ধারণ করা

  • একটি ইন্ডেক্স তৈরি করার সময় Mapping নির্ধারণ করতে পারেন:
PUT /my-index
{
 "mappings": {
   "properties": {
     "name": { "type": "text" },
     "age": { "type": "integer" },
     "occupation": { "type": "text" },
     "join_date": { "type": "date" }
   }
 }
}
  • এখানে:
    • properties: ডকুমেন্টের বিভিন্ন ফিল্ডের স্ট্রাকচার এবং ডেটা টাইপ ধারণ করে।
    • type: ফিল্ডের ডেটা টাইপ নির্ধারণ করে, যেমন text, integer, date ইত্যাদি।

বিদ্যমান ইন্ডেক্সে Mapping যুক্ত করা

  • একটি বিদ্যমান ইন্ডেক্সে Mapping যুক্ত করতে:
PUT /my-index/_mapping
{
 "properties": {
   "email": { "type": "keyword" },
   "phone_number": { "type": "text" }
 }
}
  • এটি বিদ্যমান ইন্ডেক্সে নতুন ফিল্ড email এবং phone_number যুক্ত করবে।

৩. Document তৈরি করা (Create Document)

একটি ডকুমেন্ট ইনডেক্স করতে HTTP POST বা PUT রিকোয়েস্ট ব্যবহার করা হয়।

উদাহরণ:

POST /my-index/_doc/1
{
 "name": "John Doe",
 "age": 30,
 "occupation": "Software Engineer",
 "join_date": "2022-05-10"
}

এখানে:

  • /my-index হলো ইন্ডেক্সের নাম।
  • /_doc/1 হলো ডকুমেন্ট আইডি, যা ডকুমেন্টটিকে ইউনিকভাবে চিহ্নিত করে।
  • JSON ফরম্যাটে ডকুমেন্টের তথ্য প্রদান করা হয়েছে।

সফলভাবে ইনডেক্স হলে created স্ট্যাটাস সহ রেসপন্স পাওয়া যাবে।

৪. Mapping এবং Document আপডেট করা

  • যদি আপনি একটি নতুন ফিল্ড Mapping-এ যুক্ত করতে চান, তাহলে এটি পরে ইন্ডেক্সে যুক্ত করা যায়:
PUT /my-index/_mapping
{
 "properties": {
   "department": { "type": "text" }
 }
}
  • এরপর, নতুন ফিল্ডসহ ডকুমেন্ট ইনডেক্স করতে:
POST /my-index/_doc/2
{
 "name": "Jane Doe",
 "age": 28,
 "occupation": "Data Scientist",
 "join_date": "2023-03-01",
 "department": "Data Science"
}

৫. ডকুমেন্ট রিট্রিভ করা (Retrieve Document)

  • একটি নির্দিষ্ট ডকুমেন্ট রিট্রিভ করতে HTTP GET রিকোয়েস্ট ব্যবহার করুন:
GET /my-index/_doc/1
  • এটি /my-index ইন্ডেক্সের 1 আইডি সহ ডকুমেন্ট রিট্রিভ করবে এবং সেই ডকুমেন্টের তথ্য JSON ফরম্যাটে রেসপন্স করবে।

৬. ডকুমেন্ট আপডেট করা (Update Document)

  • Elasticsearch-এ একটি ডকুমেন্ট আপডেট করতে:
POST /my-index/_update/1
{
 "doc": {
   "age": 31,
   "department": "Engineering"
 }
}
  • এখানে:
    • "doc" ফিল্ডের ভেতরে আপডেট করা তথ্য প্রদান করা হয়।

উপসংহার

Elasticsearch-এ Index, Document, এবং Mapping তৈরি করা খুবই সহজ এবং RESTful API ব্যবহার করে এটি করা যায়। Index তৈরি করে সেটার Mapping নির্ধারণ করা Elasticsearch-কে ডেটা সঠিকভাবে ইন্ডেক্স এবং সার্চ করতে সহায়ক করে। ডকুমেন্ট ইনডেক্স করা এবং আপডেট করার মাধ্যমে ডেটা সহজে ম্যানেজ করা যায় এবং Mapping কাস্টমাইজ করে ডেটার কাঠামো নির্ধারণ করা যায়।

Content added By

Elasticsearch-এ Data Indexing এবং Search Operation

Elasticsearch-এ ডেটা ইন্ডেক্সিং এবং সার্চ অপারেশন হলো ডেটা ব্যবস্থাপনা এবং রিট্রিভালের মূল উপাদান। Elasticsearch ডকুমেন্ট ইনডেক্সিং-এর মাধ্যমে ডেটা সংরক্ষণ করে এবং সার্চ অপারেশন পরিচালনা করে দ্রুত এবং কার্যকরভাবে ডেটা রিট্রিভ করতে সক্ষম হয়। নিচে Elasticsearch-এ Data Indexing এবং Search Operation-এর ধাপ এবং উদাহরণ আলোচনা করা হলো।

১. Data Indexing (ডেটা ইন্ডেক্সিং)

  • ডেটা ইন্ডেক্সিং হলো ডকুমেন্টগুলো Elasticsearch-এ সংরক্ষণ করার প্রক্রিয়া। এটি JSON ফরম্যাটে ডেটা সংরক্ষণ করে এবং ডেটাকে দ্রুত সার্চ এবং রিট্রিভ করার জন্য একটি ইন্ডেক্স তৈরি করে।
  • একটি ডকুমেন্ট ইন্ডেক্স করার জন্য HTTP POST বা PUT রিকোয়েস্ট ব্যবহার করা হয়।

ডকুমেন্ট ইন্ডেক্স করার উদাহরণ

POST /my-index/_doc/1
{
  "name": "John Doe",
  "age": 30,
  "occupation": "Software Engineer",
  "join_date": "2022-05-10"
}
  • এখানে:
    • /my-index হলো ইন্ডেক্সের নাম।
    • /_doc/1 হলো ডকুমেন্ট আইডি, যা ডকুমেন্টটিকে ইউনিকভাবে চিহ্নিত করে।
    • JSON ফরম্যাটে ডকুমেন্টের তথ্য প্রদান করা হয়েছে।
  • সফলভাবে ডকুমেন্ট ইন্ডেক্স করা হলে created স্ট্যাটাস সহ একটি রেসপন্স দেখা যাবে।

Bulk Indexing

  • একাধিক ডকুমেন্ট একসাথে ইন্ডেক্স করার জন্য Bulk API ব্যবহার করা হয়, যা বড় আকারের ডেটা দ্রুত ইন্ডেক্স করতে সহায়ক।
POST /_bulk
{ "index": { "_index": "my-index", "_id": "2" } }
{ "name": "Jane Doe", "age": 28, "occupation": "Data Scientist", "join_date": "2023-03-01" }
{ "index": { "_index": "my-index", "_id": "3" } }
{ "name": "Alice", "age": 35, "occupation": "Product Manager", "join_date": "2021-11-15" }
  • এখানে:
    • একাধিক ডকুমেন্ট /_bulk API ব্যবহার করে ইনডেক্স করা হচ্ছে।
    • প্রতিটি ডকুমেন্টে _index এবং _id নির্ধারণ করা হয়েছে, এবং ডকুমেন্টের তথ্য JSON ফরম্যাটে প্রদান করা হয়েছে।

২. Search Operation (সার্চ অপারেশন)

  • Elasticsearch-এ সার্চ অপারেশন HTTP GET বা POST রিকোয়েস্টের মাধ্যমে পরিচালিত হয়। সার্চের মাধ্যমে নির্দিষ্ট টার্ম, ফিল্ড, বা কিওয়ার্ড দিয়ে ডকুমেন্ট খুঁজে বের করা যায়।
  • Elasticsearch-এ সার্চ করার জন্য Query DSL (Domain Specific Language) ব্যবহার করা হয়, যা JSON ফরম্যাটে সার্চ রিকোয়েস্ট তৈরি করে।

বেসিক সার্চ অপারেশন

GET /my-index/_search
{
  "query": {
    "match": {
      "occupation": "Software Engineer"
    }
  }
}
  • এখানে:
    • /my-index/_search ইন্ডেক্সে সার্চ করা হচ্ছে।
    • "query" ফিল্ডে "match" কন্ডিশন ব্যবহার করে "occupation" ফিল্ডে "Software Engineer" টার্মের সাথে মিল খুঁজে বের করা হচ্ছে।
  • রেসপন্সে মিলে যাওয়া ডকুমেন্টগুলো JSON ফরম্যাটে রিটার্ন করা হবে।

ফিল্টার সহ সার্চ অপারেশন

GET /my-index/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "occupation": "Software Engineer" } }
      ],
      "filter": [
        { "range": { "age": { "gte": 25, "lte": 35 } } }
      ]
    }
  }
}
  • এখানে:
    • "bool" কন্ডিশন ব্যবহার করে "must" এবং "filter" ক্লজ দিয়ে সার্চ করা হয়েছে।
    • "must" ক্লজের মাধ্যমে "occupation" ফিল্ডে "Software Engineer" টার্ম খোঁজা হয়েছে।
    • "filter" ক্লজের মাধ্যমে "age" ফিল্ডে ২৫ থেকে ৩৫ বছরের মধ্যে থাকা ডকুমেন্টগুলো ফিল্টার করা হয়েছে।
  • সার্চ রেসপন্সে মিলে যাওয়া ডকুমেন্টগুলো বয়সের সীমাবদ্ধতার মধ্যেও থাকবে।

৩. Advanced Search Operation (উন্নত সার্চ অপারেশন)

  • Elasticsearch-এ উন্নত সার্চ অপারেশন করা যায়, যেমন কিওয়ার্ড সার্চ, মাল্টিপল কন্ডিশন, এবং অ্যাগ্রিগেশন।

মাল্টিপল কন্ডিশন সহ সার্চ

GET /my-index/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "occupation": "Data Scientist" } },
        { "match": { "department": "Data Science" } }
      ]
    }
  }
}
  • এখানে "bool" কন্ডিশন ব্যবহার করে "must" ক্লজে একাধিক কন্ডিশন সেট করা হয়েছে, যাতে "occupation" এবং "department" উভয় ফিল্ডে মিল খুঁজে বের করা যায়।

অ্যাগ্রিগেশন (Aggregation)

  • Elasticsearch-এ সার্চ রেসপন্সে অ্যাগ্রিগেশন ব্যবহার করে ডেটা বিশ্লেষণ করা যায়, যেমন গড় (average), সর্বাধিক (max), সর্বনিম্ন (min), ইত্যাদি।
GET /my-index/_search
{
  "aggs": {
    "average_age": {
      "avg": {
        "field": "age"
      }
    }
  },
  "size": 0
}
  • এখানে:
    • "aggs" ফিল্ডে "average_age" নামক একটি অ্যাগ্রিগেশন তৈরি করা হয়েছে, যা "age" ফিল্ডের গড় হিসাব করবে।
    • "size": 0 দিয়ে সার্চ রেসপন্সে ডকুমেন্ট না দেখিয়ে শুধুমাত্র অ্যাগ্রিগেশন রেসপন্স দেখানো হয়েছে।

৪. Searching with Sorting and Pagination

সার্চে সর্চিং (Sorting) ব্যবহার করা

  • সার্চ রেসপন্স সর্চ করতে "sort" ফিল্ড ব্যবহার করা হয়:
GET /my-index/_search
{
  "query": {
    "match": {
      "occupation": "Software Engineer"
    }
  },
  "sort": [
    { "age": { "order": "asc" } }
  ]
}
  • এখানে "age" ফিল্ডের উপর ভিত্তি করে ডকুমেন্টগুলো এসেন্ডিং (asc) অর্ডারে সর্চ করা হয়েছে।

পেজিনেশন (Pagination) ব্যবহার করা

  • পেজিনেশন করার জন্য "from" এবং "size" প্যারামিটার ব্যবহার করা হয়:
GET /my-index/_search
{
  "query": {
    "match": {
      "occupation": "Data Scientist"
    }
  },
  "from": 0,
  "size": 5
}
  • "from" প্যারামিটার সার্চ রেসপন্সে কোন ডকুমেন্ট থেকে শুরু হবে তা নির্দেশ করে এবং "size" প্যারামিটার কতগুলি ডকুমেন্ট প্রদর্শিত হবে তা নির্ধারণ করে।

উপসংহার

Elasticsearch-এ Data Indexing এবং Search Operation খুবই দ্রুত এবং কার্যকরীভাবে RESTful API ব্যবহার করে সম্পন্ন করা যায়। ডকুমেন্ট ইনডেক্স করে ডেটা সংরক্ষণ, ফিল্টার এবং সার্চ করে ডেটা রিট্রিভ করা Elasticsearch-এ সহজ এবং স্কেলেবল। উন্নত সার্চ অপারেশন এবং অ্যাগ্রিগেশন ব্যবহার করে ডেটা বিশ্লেষণ আরও সহজে করা যায়, যা Elasticsearch-কে একটি শক্তিশালী সার্চ এবং অ্যানালিটিক্স ইঞ্জিন হিসেবে প্রতিষ্ঠিত করে।

Content added By

REST API ব্যবহার করে Elasticsearch এর সাথে যোগাযোগ

REST API ব্যবহার করে Elasticsearch এর সাথে যোগাযোগ

Elasticsearch একটি RESTful সার্চ এবং অ্যানালিটিক্স ইঞ্জিন, যা REST API এর মাধ্যমে ডেটা ইন্ডেক্সিং, সার্চ, এবং ডেটা ম্যানিপুলেশন পরিচালনা করে। REST API ব্যবহার করে Elasticsearch এর সাথে HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) পাঠিয়ে সহজেই যোগাযোগ করা যায়। Elasticsearch JSON ফরম্যাটে রিকোয়েস্ট গ্রহণ করে এবং রেসপন্স প্রদান করে। নিচে REST API ব্যবহার করে Elasticsearch এর সাথে যোগাযোগের বিস্তারিত ধাপ এবং উদাহরণ দেওয়া হলো:

১. REST API রিকোয়েস্ট পাঠানোর পদ্ধতি

REST API ব্যবহার করে Elasticsearch এর সাথে যোগাযোগ করতে নিম্নলিখিত HTTP মেথডগুলো ব্যবহার করা হয়:

  • GET: ডেটা রিট্রিভ করার জন্য।
  • POST: ডেটা তৈরি বা সার্চ অপারেশনের জন্য।
  • PUT: ডেটা আপডেট বা ইন্ডেক্স তৈরি করার জন্য।
  • DELETE: ডেটা বা ইন্ডেক্স মুছে ফেলার জন্য।

API রিকোয়েস্ট পাঠানোর জন্য আপনি cURL, Postman, বা ব্রাউজারের API ক্লায়েন্ট ব্যবহার করতে পারেন।

২. ইন্ডেক্স তৈরি করা (Create Index)

  • একটি নতুন ইন্ডেক্স তৈরি করতে HTTP PUT রিকোয়েস্ট ব্যবহার করুন:
PUT http://localhost:9200/my-index
  • রিকোয়েস্ট পাঠানোর পর, Elasticsearch acknowledged: true সহ একটি JSON রেসপন্স প্রদান করবে, যা ইন্ডেক্স সফলভাবে তৈরি হওয়ার ইঙ্গিত দেয়।

ইন্ডেক্সের কাস্টম সেটিংস সহ রিকোয়েস্ট

  • ইন্ডেক্সের শার্ড এবং রেপ্লিকা সংখ্যা নির্ধারণ করে ইন্ডেক্স তৈরি করতে:
PUT http://localhost:9200/my-index
{
 "settings": {
   "number_of_shards": 3,
   "number_of_replicas": 1
 }
}
  • এটি কনফিগার করা শার্ড এবং রেপ্লিকা নিয়ে ইন্ডেক্স তৈরি করবে।

৩. ডকুমেন্ট ইনডেক্স করা (Index a Document)

  • একটি ডকুমেন্ট ইনডেক্স করতে HTTP POST রিকোয়েস্ট ব্যবহার করুন:
POST http://localhost:9200/my-index/_doc/1
{
 "name": "John Doe",
 "age": 30,
 "occupation": "Software Engineer"
}
  • এখানে:
    • /my-index হলো ইন্ডেক্সের নাম।
    • /_doc/1 হলো ডকুমেন্টের ইউনিক আইডি।
  • রেসপন্সে ডকুমেন্টটি সফলভাবে ইনডেক্স হওয়ার স্ট্যাটাস দেখা যাবে।

৪. ডকুমেন্ট রিট্রিভ করা (Retrieve a Document)

  • একটি ডকুমেন্ট রিট্রিভ করতে HTTP GET রিকোয়েস্ট ব্যবহার করুন:
GET http://localhost:9200/my-index/_doc/1
  • এটি /my-index ইন্ডেক্স থেকে 1 আইডি সহ ডকুমেন্ট রিট্রিভ করবে এবং JSON ফরম্যাটে ডকুমেন্টের তথ্য প্রদর্শন করবে।

৫. ডকুমেন্ট আপডেট করা (Update a Document)

  • একটি ডকুমেন্ট আপডেট করতে HTTP POST রিকোয়েস্ট ব্যবহার করুন:
POST http://localhost:9200/my-index/_update/1
{
 "doc": {
   "age": 31,
   "occupation": "Senior Software Engineer"
 }
}
  • "doc" ফিল্ডের মাধ্যমে আপডেট করা তথ্য প্রদান করা হয়। Elasticsearch এটি আপডেট করে এবং একটি রেসপন্স প্রদান করে।

৬. ডকুমেন্ট ডিলিট করা (Delete a Document)

  • একটি ডকুমেন্ট ডিলিট করতে HTTP DELETE রিকোয়েস্ট ব্যবহার করুন:
DELETE http://localhost:9200/my-index/_doc/1
  • এটি 1 আইডি সহ ডকুমেন্টটি মুছে ফেলবে এবং একটি সফল রেসপন্স প্রদর্শন করবে।

৭. ইন্ডেক্স সার্চ করা (Search Index)

  • একটি ইন্ডেক্সে সার্চ করতে HTTP GET বা POST রিকোয়েস্ট ব্যবহার করা হয়:
GET http://localhost:9200/my-index/_search
{
 "query": {
   "match": {
     "occupation": "Software Engineer"
   }
 }
}
  • "match" কন্ডিশন ব্যবহার করে "occupation" ফিল্ডে "Software Engineer" টার্মের সাথে মিল খুঁজে বের করা হচ্ছে। সার্চ রেসপন্সে মিলে যাওয়া ডকুমেন্টগুলো JSON ফরম্যাটে প্রদর্শিত হবে।

৮. ফিল্টার এবং রেঞ্জ সার্চ (Filter and Range Search)

  • ডকুমেন্ট সার্চ করার সময় নির্দিষ্ট ফিল্ডে রেঞ্জ ব্যবহার করা যায়:
GET http://localhost:9200/my-index/_search
{
 "query": {
   "bool": {
     "must": [
       { "match": { "occupation": "Software Engineer" } }
     ],
     "filter": [
       { "range": { "age": { "gte": 25, "lte": 35 } } }
     ]
   }
 }
}
  • "bool" কন্ডিশন এবং "range" ফিল্টার ব্যবহার করে সার্চটি আরও নির্দিষ্ট করা হয়েছে।

৯. Bulk অপারেশন (Bulk Operations)

  • একাধিক ডকুমেন্ট ইনডেক্স বা ডিলিট করতে HTTP POST রিকোয়েস্ট ব্যবহার করে Bulk API চালাতে পারেন:
POST http://localhost:9200/_bulk
{ "index": { "_index": "my-index", "_id": "2" } }
{ "name": "Jane Doe", "age": 28, "occupation": "Data Scientist" }
{ "delete": { "_index": "my-index", "_id": "1" } }
  • এই রিকোয়েস্টে:
    • প্রথম ডকুমেন্ট ইনডেক্স করা হয়েছে।
    • দ্বিতীয় অপারেশনে 1 আইডি সহ ডকুমেন্ট ডিলিট করা হয়েছে।

১০. ক্লাস্টারের স্বাস্থ্য চেক করা (Check Cluster Health)

  • Elasticsearch ক্লাস্টারের স্বাস্থ্য চেক করতে HTTP GET রিকোয়েস্ট ব্যবহার করুন:
GET http://localhost:9200/_cluster/health
  • এটি ক্লাস্টারের সামগ্রিক স্বাস্থ্য, শার্ডের স্ট্যাটাস, এবং নোডের সংখ্যা সম্পর্কিত তথ্য প্রদান করবে।

১১. নোডের স্ট্যাটাস চেক করা (Check Node Status)

  • নোডের স্ট্যাটাস চেক করতে HTTP GET রিকোয়েস্ট ব্যবহার করুন:
GET http://localhost:9200/_nodes
  • এটি ক্লাস্টারে সংযুক্ত সব নোডের বিস্তারিত তথ্য, যেমন নোডের নাম, IP, এবং মেমোরি ব্যবহার সম্পর্কিত তথ্য প্রদর্শন করবে।

উপসংহার

REST API ব্যবহার করে Elasticsearch এর সাথে খুব সহজে যোগাযোগ করা যায়। ইন্ডেক্স তৈরি করা, ডকুমেন্ট ইনডেক্স করা, সার্চ অপারেশন চালানো, এবং ক্লাস্টারের স্বাস্থ্য চেক করার মতো কাজগুলো RESTful API ব্যবহার করে দ্রুত এবং কার্যকরভাবে করা যায়। JSON ফরম্যাটে রিকোয়েস্ট এবং রেসপন্স প্রদান করার কারণে এটি ডেটা ম্যানিপুলেশন এবং রিট্রিভালকে আরও সহজ করে তোলে।

Content added By

Elasticsearch Query DSL এর ধারণা

Elasticsearch Query DSL এর ধারণা

Elasticsearch Query DSL (Domain Specific Language) হলো Elasticsearch-এ ডেটা সার্চ এবং ফিল্টার করার জন্য একটি JSON ভিত্তিক ল্যাঙ্গুয়েজ। এটি একটি শক্তিশালী এবং নমনীয় টুল যা ব্যবহারকারীদের ডকুমেন্টের মধ্যে নির্দিষ্ট শর্ত, কিওয়ার্ড, এবং ফিল্টার ব্যবহার করে সার্চ অপারেশন চালাতে সহায়ক। Query DSL ব্যবহার করে বিভিন্ন ধরনের সার্চ এবং ফিল্টার তৈরি করা যায়, যেমন টার্ম সার্চ, ফুল-টেক্সট সার্চ, রেঞ্জ ফিল্টার, বুলিয়ান অপারেশন, এবং আরও অনেক কিছু। নিচে Elasticsearch Query DSL-এর বিস্তারিত ধারণা এবং এর উপাদানগুলো নিয়ে আলোচনা করা হলো।

Query DSL এর মূল উপাদানসমূহ

Elasticsearch Query DSL মূলত দুটি প্রধান অংশে বিভক্ত: Leaf Query Clauses এবং Compound Query Clauses। এগুলো একত্রে ব্যবহার করে আরও জটিল এবং উন্নত সার্চ অপারেশন তৈরি করা যায়।

১. Leaf Query Clauses

  • Leaf Queries হলো সুনির্দিষ্ট কন্ডিশন বা শর্ত, যা একটি ডকুমেন্টের নির্দিষ্ট ফিল্ড বা মানের ভিত্তিতে মিল খুঁজে বের করে। Leaf Query সাধারণত একটি ফিল্ড এবং এর মানের উপর ভিত্তি করে কাজ করে।
  • উদাহরণ:
    • match: একটি ফিল্ডে নির্দিষ্ট টার্ম বা টেক্সটের সাথে মিল খুঁজে বের করে।
    • term: নির্দিষ্ট ফিল্ডের নির্দিষ্ট মান খুঁজে বের করে (exact match)।
    • range: একটি ফিল্ডে রেঞ্জ ভিত্তিক কন্ডিশন প্রয়োগ করে (যেমন সংখ্যা বা তারিখের রেঞ্জ)।

উদাহরণ:

{
  "query": {
    "term": {
      "occupation": "engineer"
    }
  }
}
  • এখানে "term" কন্ডিশনটি "occupation" ফিল্ডে "engineer" মান খুঁজে বের করছে।

২. Compound Query Clauses

  • Compound Queries একাধিক Leaf Query বা অন্যান্য Compound Query-কে একত্রে সংযুক্ত করতে ব্যবহার করা হয়। এটি আরও জটিল এবং শক্তিশালী কন্ডিশন তৈরি করতে সহায়ক।
  • উদাহরণ:
    • bool: একাধিক কন্ডিশন (must, should, must_not, filter) একত্রে সংযুক্ত করে।
    • dis_max: একাধিক query-র সর্বোচ্চ স্কোরিং রেজাল্ট প্রদান করে।
    • constant_score: নির্দিষ্ট স্কোরের ভিত্তিতে রেজাল্ট ফিল্টার করে।

উদাহরণ:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "occupation": "software engineer" } }
      ],
      "filter": [
        { "range": { "age": { "gte": 25, "lte": 35 } } }
      ]
    }
  }
}
  • এখানে "bool" কন্ডিশন ব্যবহার করে "must" ক্লজে "occupation" ফিল্ডে "software engineer" টার্ম খোঁজা হচ্ছে এবং "filter" ক্লজে "age" ফিল্ডে বয়সের রেঞ্জ (২৫ থেকে ৩৫) ফিল্টার করা হচ্ছে।

Query DSL এর সাধারণ ধরনের সার্চ অপারেশন

১. Match Query (ফুল-টেক্সট সার্চ)

  • match কন্ডিশন ব্যবহার করে একটি ফিল্ডে নির্দিষ্ট টার্ম বা টেক্সটের সাথে মিল খুঁজে বের করা হয়। এটি সাধারণত ফ্রি-টেক্সট সার্চের জন্য ব্যবহৃত হয়।
{
  "query": {
    "match": {
      "description": "open source software"
    }
  }
}
  • এখানে "description" ফিল্ডে "open source software" টার্মটি খোঁজা হচ্ছে।

২. Term Query (Exact Match)

term কন্ডিশন নির্দিষ্ট ফিল্ডের সুনির্দিষ্ট মান খুঁজে বের করতে ব্যবহৃত হয়। এটি সাধারণত স্ট্রাকচারড ডেটার জন্য প্রযোজ্য, যেমন সংখ্যা, তারিখ, বা কিওয়ার্ড।

{  "query": {    "term": {      "status": "active"    }  } }

  • এখানে "status" ফিল্ডে "active" মান খোঁজা হচ্ছে।

৩. Range Query (রেঞ্জ ভিত্তিক কন্ডিশন)

  • range কন্ডিশন ব্যবহার করে সংখ্যামূলক বা তারিখের রেঞ্জ ভিত্তিক কন্ডিশন প্রয়োগ করা যায়।
{
  "query": {
    "range": {
      "salary": {
        "gte": 50000,
        "lte": 100000
      }
    }
  }
}
  • এখানে "salary" ফিল্ডে ৫০,০০০ থেকে ১,০০,০০০ এর মধ্যে থাকা ডকুমেন্টগুলো ফিল্টার করা হচ্ছে।

৪. Bool Query (Multiple Conditions)

  • bool কন্ডিশন ব্যবহার করে একাধিক query-র সংমিশ্রণ তৈরি করা যায়। এটি চারটি প্রধান ক্লজ ব্যবহার করে:
    • must: সব কন্ডিশন মিলে যাওয়া আবশ্যক।
    • should: কন্ডিশনগুলো মিলে গেলে রেজাল্ট স্কোর বাড়বে।
    • must_not: কন্ডিশনগুলো মিলে গেলে রেজাল্ট থেকে বাদ দেওয়া হবে।
    • filter: নির্দিষ্ট কন্ডিশন পূরণ করতে হবে, তবে এটি স্কোর প্রভাবিত করে না।
{
  "query": {
    "bool": {
      "must": [
        { "match": { "occupation": "developer" } }
      ],
      "should": [
        { "match": { "skills": "Java" } },
        { "match": { "skills": "Python" } }
      ],
      "must_not": [
        { "term": { "status": "inactive" } }
      ]
    }
  }
}
  • এখানে "must" ক্লজে "occupation" ফিল্ডে "developer" থাকতে হবে, "should" ক্লজে "skills" ফিল্ডে "Java" বা "Python" টার্ম থাকতে পারবে, এবং "must_not" ক্লজে "status" ফিল্ডে "inactive" না থাকতে হবে।

৫. Wildcard Query (প্যাটার্ন সার্চ)

  • wildcard কন্ডিশন ব্যবহার করে একটি ফিল্ডে প্যাটার্ন ভিত্তিক সার্চ করা যায়, যেখানে * এবং ? প্যাটার্ন ব্যবহার করা হয়।
{
  "query": {
    "wildcard": {
      "username": "jo*"
    }
  }
}
  • এখানে "username" ফিল্ডে "jo" দিয়ে শুরু হওয়া সমস্ত মান খোঁজা হচ্ছে।

৬. Fuzzy Query (অপরিচিত টার্মের জন্য সার্চ)

  • fuzzy কন্ডিশন ব্যবহার করে কাছাকাছি টার্ম বা স্পেলিং মিস্টেক সহ টার্ম খোঁজা যায়।
{
  "query": {
    "fuzzy": {
      "name": "jon"
    }
  }
}
  • এটি "name" ফিল্ডে "jon", "john", অথবা এর কাছাকাছি মিল খুঁজে বের করবে।

Query DSL এর সুবিধা

  1. নমনীয়তা: Query DSL ব্যবহার করে খুব সহজেই বিভিন্ন ধরনের কন্ডিশন তৈরি করা যায়, যেমন এক্সাক্ট ম্যাচ, রেঞ্জ, বা ফ্রি-টেক্সট সার্চ।
  2. ব্লেন্ডেড কন্ডিশন: Compound Query ব্যবহার করে একাধিক কন্ডিশন একসঙ্গে সংযুক্ত করা এবং আরও জটিল সার্চ অপারেশন তৈরি করা যায়।
  3. JSON ভিত্তিক কাঠামো: JSON ফরম্যাটে কন্ডিশন তৈরি করার ফলে এটি REST API এর মাধ্যমে সহজেই ব্যবহার করা যায় এবং রেসপন্সও JSON ফরম্যাটে পাওয়া যায়।

উপসংহার

Elasticsearch Query DSL একটি শক্তিশালী এবং নমনীয় সার্চ ল্যাঙ্গুয়েজ, যা ব্যবহারকারীদের সুনির্দিষ্ট কন্ডিশন এবং কিওয়ার্ড ব্যবহার করে সার্চ অপারেশন চালাতে সহায়ক। Leaf Query এবং Compound Query-এর মাধ্যমে বিভিন্ন ধরনের এবং উন্নত সার্চ অপারেশন তৈরি করা যায়। Query DSL-এর সাহায্যে Elasticsearch-এ দ্রুত এবং কার্যকরীভাবে ডেটা সার্চ এবং ফিল্টার করা সম্ভব।

Content added By
Promotion