Sponsored

এক্সপ্রেস থেকে ইলাস্টিক সার্চ ব্যবহার

0
2

কিভাবে এক্সপ্রেস API ব্যবহার করে ইলাস্টিক সার্চে ডেটা স্টোর এবং ডেটা সার্চ করা যায়, তা দেখব এই পোস্টে।

ইলাস্টিক সার্চ কি

ইলাস্টিক সার্চ হচ্ছে সার্চ এবং এনালিটিক্স ইঞ্জিন। বলতে পারেন নিজস্ব গুগলের মত সার্চ ইঞ্জিন প্লাটফর্ম। যে প্লাটফর্ম ব্যবহার করে ডেটা স্টোর, অনেক বিশাল ডেটাসেট থেকে খুব দ্রুত কোন ডেটা খুঁজে বের করা এবং ডেটা এনালাইসিস করতে পারব। রেগুলার ডেটাবেজে কীওয়ার্ড ম্যাচ না করলে ডেটা খুঁজে বের করা যায় না। ইলাস্টিক সার্চে আমরা কাছাকাছি কিওয়ার্ড দিয়েও ডেটা খুঁজে বের করতে পারব। ইলাস্টিক সার্চ বলতে ইলাস্টিক স্ট্যাককে (ELK স্ট্যাক) বুঝায়।

  • E = ইলাস্টিক সার্চ (সার্চ ইঞ্জিন)
  • L = লংস্ট্যাস (ডেটা প্রসেসিং পাইপ লাইন)
  • K = Kibana (ডেটা ভিজুয়ালাইজেশন ড্যাশবোর্ড)

আমরা যে কোন ডেটা ইলাস্টিক সার্চে স্টোর করে রাখতে পারব। সাধারণত JSON ফরমেটে ডেটা স্টোর করে রাখা হয়। এরপর বিভিন্ন কিওয়ার্ড অথবা ফিল্টার ব্যবহার করে সার্চ করতে পারব। যা খুব দ্রুত ডেটা বের করে দিবে।

লোকালি ইলাস্টিকসার্চ ইন্সটল এবং ব্যবহার

লোকালি ইলাস্টিক সার্চ ইন্সটল করে ব্যবহার করার জন্য ডকার ইন্সটল করে নিব। এরপর ডকার রান করব। এরপর টার্মিনাল বা কমান্ডলাইনে গিয়ে লেখবঃ

curl -fsSL https://elastic.co/start-local | sh

ইলাস্টিক সার্চ ইন্সটল হয়ে গেলো। অফিশিয়াল গাইড।

এতটুকুই!

আমাদেরকে ইলাস্টিকসার্চ এবং কিবানার URL দেখাবে। যেমন http://localhost:9200 হচ্ছে ইলাস্টিক সার্চের URL. এই বেজ URL এ গেলে ইলাস্টিক সার্চের কোন ভার্সন ইন্সটল আছে এসব তথ্য দেখা যাবে। এই URL ব্যবহার করে আমরা যে কোন GET, POST এসব API কল করে ডেটা ইনসার্ট এবং রিট্রিভ করতে পারব।

কিভানার URL হচ্ছে http://localhost:5601 ।এখানে গেলে ভিজ্যালি ডেটা গুলো দেখার পাশাপশি এনালিটিক্স দেখতে পাবো।।

এখানে যদি পাসওয়ার্ড চায়, আমাদের পাসওয়ার্ড রিসেট করে নিতে হতে পারে। তার জন্য টার্মিনাল বা কমান্ডলাইনে গিয়ে এই কমান্ড রান করব।

docker exec -it es-local-dev bin/elasticsearch-reset-password -u elastic

তাহলে আমাদের নতুন পাসওয়ার্ড দিবে। এই ইউজারনেম হচ্ছে elastic এবং নতুন পাসওয়ার্ড দিয়ে আমরা লগিন করতে পারব।

ইলাস্টিক সার্চে ডেটা ইনসার্ট

ইনিশিয়ালি কোন ডেটা থাকবে না। আমরা ডেটা ইন্সার্ট করতে পারি এভাবেঃ

curl -X POST "http://localhost:9200/blogs/_doc/" \
  -H "Content-Type: application/json" \
  -u elastic:YOUR_PASSWORD \
  -d '{
        "title": "Hello Elasticsearch",
        "description": "Getting started with Express API"
      }'

টার্মিনালে গিয়ে উপরের কমান্ড রান করলে ডেটা ইন্সার্ট হবে। এবং নিচের মত রেসপন্স পাবোঃ

{"_index":"blogs","_id":"t5ADHJoBZAd1zomDCcC2","_version":1,"result":"created","_shards":{"total":1,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}%

এবার ইলাস্টিক সার্চ কাজ করে কিনা, তাও দেখতে পারি। তার জন্য টার্মিনালে গিয়ে লিখবঃ

curl -X GET "http://localhost:9200/blogs/_search?pretty" -u elastic:YOUR_PASSWORD

এরপর দেখব আমাদের ডকুমেন্টটা রিটার্ণ করেছে। ফুল API গাইডলাইন পাওয়া যাবে এখানে।

এক্সপ্রেস থেকে ইলাস্টিক সার্চ ব্যবহার

এবার আমরা এক্সপ্রেস API থেকে ডেটা ইনসার্ট এবং রিড করব। তার জন্য নতুন একটা প্রজেক্ট তৈরি করে নিব।

npm init -y
npm install express @elastic/elasticsearch dotenv

packages.json:

{
  "name": "elastic_search",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "node index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "type": "module",
  "dependencies": {
    "@elastic/elasticsearch": "^8.19.1",
    "dotenv": "^17.2.3",
    "express": "^5.1.0"
  }
}

index.js:

import express from "express";
import dotenv from "dotenv";
import client from "./elasticsearch.js";

dotenv.config();

const app = express();
app.use(express.json());

// Create index if not exists
async function ensureIndex(index) {
  const exists = await client.indices.exists({ index });
  if (!exists) {
    await client.indices.create({
      index,
      body: {
        mappings: {
          properties: {
            title: { type: "text" },
            description: { type: "text" },
            createdAt: { type: "date" },
          },
        },
      },
    });
    console.log(`✅ Created index: ${index}`);
  }
}

// Index a document
app.post("/api/index/:indexName", async (req, res) => {
  const { indexName } = req.params;
  try {
    await ensureIndex(indexName);
    const result = await client.index({
      index: indexName,
      document: { ...req.body, createdAt: new Date() },
    });

    await client.indices.refresh({ index: indexName });
    res.json({ id: result._id, result: "created" });
  } catch (err) {
    console.error(err.meta ? err.meta.body : err);
    res.status(500).json({ error: err.meta ? err.meta.body : err.message });
  }
});

// Search documents
app.get("/api/index/:indexName/search", async (req, res) => {
  const { indexName } = req.params;
  const q = req.query.q || "";
  try {
    const result = await client.search({
      index: indexName,
      query: {
        multi_match: {
          query: q,
          fields: ["title", "description"],
        },
      },
    });

    res.json(result.hits.hits.map((h) => ({ id: h._id, ...h._source })));
  } catch (err) {
    res.status(500).json({ error: err.meta ? err.meta.body : err.message });
  }
});

app.listen(process.env.PORT || 3000, () =>
  console.log(`🚀 Server running on port ${process.env.PORT || 3000}`)
);

elasticsearch.js:

import { Client } from "@elastic/elasticsearch";
import dotenv from "dotenv";
dotenv.config();

const client = new Client({
  node: process.env.ELASTIC_URL,
  auth: {
    username: process.env.ELASTIC_USER,
    password: process.env.ELASTIC_PASS,
  },
 
});

export default client;

.env:

ELASTIC_URL=http://127.0.0.1:9200
PORT=3000
ELASTIC_USER=elastic
ELASTIC_PASS=YOUR_PASSWORD

এবার npm run dev রান করব। এরপর নিচের রাউটে ভিজিট করি, তাহলে রেজাল্ট দেখতে পাবো।

http://localhost:3000/api/index/blogs/search?q=hello

ডেটা ইনসার্ট

এভাবে ডেটা ইনসার্ট করতে পারবঃ

POST: http://localhost:3000/api/index/blogs
{
    "title": "Hello, world!", 
    "description": "This data inserted from Express api."
}

রেসপন্স পাবো এমনঃ

{
    "id": "uJANHJoBZAd1zomDF8Dj",
    "result": "created"
}

এক্সপ্রেস সহ জাভাস্ক্রিপ্ট নিয়ে আরো কিছু লেখা পাওয়া যাবে বাংলায় জাভাস্ক্রিপ্ট পেইজে।

Search
Categories
Read More
Nulled
Bet365 Account কিনার পর আপনাকে যা যা করতে হবে Secret Tips Dont Miss Tcehnical Tanvir | Techtunes | টেকটিউনস
যেসব পদ্বতিতে মেইল, ফেইসবুক হ্যাকিং করতে যাবেন না!! হ্যাকিং সতর্কতা!!- প্রাথমিক পর্যায় arif
By Nettumi 2026-09-25 03:09:21 0 50
Nulled
Khulna - Colourful Minimal Digital Agency HTML Template
  Khulna – Colourful Minimal Digital Agency HTML Template Free Download. Khulna is a...
By Nettumi 2026-09-15 08:48:29 0 1K
Hacking Course
টেকনো Pova Neo 2 এলো ৭০০০ mAh বিশাল ব্যাটারি নিয়ে!
এইতো মাত্র কিছুদিন আগে পোভা ৪ সিরিজ দেশের বাজারে নিয়ে আসে টেকনো। দেখতে সুন্দর ও...
By Nettumi 2026-09-25 09:59:32 0 17
Hacking Course
বদরের যুদ্ধে ফেরেশতাদের সাহায্য — আল্লাহর এক অসাধারণ নিদর্শন
ইসলামের ইতিহাসে এমন কিছু ঘটনা আছে, যেগুলো পড়লে একজন মুমিনের ঈমান আরও শক্ত হয়ে যায়। বদরের...
By Nettumi 2026-09-25 16:14:59 0 20
Tech
সহজেই তৈরি করুন AI ইমেইজ! | Techtunes | টেকটিউনস
একজন হ্যাকার হামজা বেনডেল্লাজের গল্প সৈকত রায়ান
By Nettumi 2026-09-25 04:04:06 0 26
‎ ‎ ‎
Nettumi https://nettumi.com