Node.js के लिए Elasticsearch क्लाइंट: @elastic/elasticsearch

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

JavaScript (Node.js) के लिए Elasticsearch क्लाइंट — @elastic/elasticsearch

Elasticsearch एक शक्तिशाली डिस्ट्रीब्यूटेड सर्च और एनालिटिक्स सिस्टम है, जो Apache Lucene पर आधारित है। यह रियल-टाइम में फुल-टेक्स्ट सर्च, डेटा एग्रीगेशन और लॉग एनालिसिस करने में सक्षम है। Node.js एप्लिकेशन से Elasticsearch के साथ इंटरैक्ट करने के लिए आधिकारिक क्लाइंट @elastic/elasticsearch उपलब्ध है। यह क्लस्टर से कनेक्शन से लेकर जटिल सर्च क्वेरी तक सभी ऑपरेशन के लिए एक सुविधाजनक API प्रदान करता है।

यह लाइब्रेरी Elasticsearch 7.x और 8.x के सभी वर्जन को पूरी तरह सपोर्ट करती है, प्रॉमिस पर एसिंक्रोनस रूप से काम करती है, और हाई-लोड सर्च, एनालिटिक्स और मॉनिटरिंग सर्विसेज बनाने के लिए आदर्श है। इस लेख में हम Node.js के उदाहरणों के साथ इंस्टॉलेशन, बेसिक कॉन्फ़िगरेशन और डेटा के साथ मुख्य ऑपरेशन को कवर करेंगे।

इंस्टॉलेशन और कनेक्शन

क्लाइंट को npm पैकेज मैनेजर के माध्यम से इंस्टॉल करें:

npm install @elastic/elasticsearch

इंस्टॉलेशन के बाद, Elasticsearch सर्वर का पता और आवश्यकता अनुसार ऑथेंटिकेशन पैरामीटर देकर क्लाइंट का एक इंस्टेंस बनाएं:

const { Client } = require('@elastic/elasticsearch');

const client = new Client({
  node: 'http://localhost:9200',
  auth: {
    username: 'elastic',
    password: 'changeme'
  }
});

Elastic Cloud क्लाउड सर्विस के लिए cloud.id और auth.apiKey पैरामीटर का उपयोग करें।

इंडेक्स के साथ काम करना

Elasticsearch में इंडेक्स, रिलेशनल डेटाबेस में डेटाबेस के समान है। आइए मुख्य ऑपरेशन देखें।

इंडेक्स बनाना

async function createIndex() {
  const response = await client.indices.create({
    index: 'products',
    body: {
      settings: {
        number_of_shards: 1,
        number_of_replicas: 1
      },
      mappings: {
        properties: {
          title: { type: 'text' },
          description: { type: 'text' },
          price: { type: 'float' },
          created_at: { type: 'date' }
        }
      }
    }
  });
  console.log('इंडेक्स बन गया:', response);
}

इंडेक्स हटाना

async function deleteIndex() {
  await client.indices.delete({ index: 'products' });
  console.log('इंडेक्स हटा दिया गया');
}

डॉक्यूमेंट जोड़ना और अपडेट करना

डॉक्यूमेंट Elasticsearch में डेटा की मूल इकाई है। products इंडेक्स में कुछ रिकॉर्ड जोड़ें:

async function addDocuments() {
  const doc1 = {
    title: 'Apple MacBook Pro लैपटॉप',
    description: 'डेवलपर्स और डिज़ाइनर्स के लिए शक्तिशाली लैपटॉप',
    price: 2499.99,
    created_at: new Date()
  };

  const doc2 = {
    title: 'Logitech मैकेनिकल कीबोर्ड',
    description: 'बैकलिट वायरलेस कीबोर्ड',
    price: 149.99,
    created_at: new Date()
  };

  // ID के साथ जोड़ना
  await client.index({
    index: 'products',
    id: '1',
    body: doc1
  });

  // बिना ID के जोड़ना (ऑटो-जनरेट)
  await client.index({
    index: 'products',
    body: doc2
  });

  // डिस्क पर फोर्स राइट
  await client.indices.refresh({ index: 'products' });
}

आंशिक अपडेट के लिए update मेथड का उपयोग करें:

await client.update({
  index: 'products',
  id: '1',
  body: {
    doc: {
      price: 2399.99
    }
  }
});

डेटा सर्च करना

Elasticsearch क्वेरी बनाने के लिए एक शक्तिशाली DSL प्रदान करता है। आइए कुछ उदाहरण देखें।

फुल-टेक्स्ट सर्च

async function searchProducts(query) {
  const response = await client.search({
    index: 'products',
    body: {
      query: {
        match: {
          description: query
        }
      }
    }
  });

  console.log('मिले डॉक्यूमेंट:', response.hits.total.value);
  response.hits.hits.forEach(hit => {
    console.log(`ID: ${hit._id}, Score: ${hit._score}`, hit._source);
  });
}

searchProducts('लैपटॉप');

अनुशंसाएँ