Elasticsearch-Client für Node.js: @elastic/elasticsearch

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Elasticsearch-Client für Node.js (@elastic/elasticsearch)



Die Bibliothek @elastic/elasticsearch ist der offizielle, leistungsstarke HTTP-Client für die Interaktion mit Elasticsearch aus der Node.js-Umgebung. Sie bietet eine praktische API für alle Operationen: von der einfachen Dokumentenindizierung bis hin zu komplexen Suchabfragen und Aggregationen. Die Bibliothek unterstützt vollständig alle Versionen von Elasticsearch 7.x und 8.x, einschließlich Cluster-Arbeit, Authentifizierung und Datenkomprimierung.



Installation

Zur Installation verwenden Sie npm oder yarn:

npm install @elastic/elasticsearch# oderyarn add @elastic/elasticsearch


Grundlegende Verbindung

Erstellen Sie eine Client-Instanz, indem Sie die Adresse des Elasticsearch-Servers angeben. Für Version 8.x ist die Konfiguration von TLS und eines API-Schlüssels oder Benutzernamens/Passworts erforderlich.

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

// Verbindung zum lokalen Server (Elasticsearch 7.x)const client = new Client({ node: 'http://localhost:9200' });

// Verbindung zum Cloud-Server Elastic Cloud (8.x)const cloudClient = new Client({ cloud: { id: 'my-cloud-id' }, auth: { apiKey: 'base64EncodedApiKey' }});


Grundlegende Operationen



1. Indizierung (Hinzufügen) eines Dokuments

Die Methode index fügt ein Dokument im angegebenen Index hinzu oder ersetzt es.

async function indexDocument() {  const result = await client.index({    index: 'articles',    id: '1',    body: {      title: 'Elasticsearch-Client für Node.js',      content: 'Detaillierte Beschreibung der Bibliothek...',      tags: ['elasticsearch', 'node.js'],      published: true,      views: 150    }  });  console.log('Dokument indiziert:', result.result);}indexDocument();


2. Suche nach Dokumenten

Die Methode search führt eine Volltextsuche mit Query DSL durch.

async function searchDocuments() {  const { body } = await client.search({    index: 'articles',    body: {      query: {        bool: {          must: [            { match: { title: 'Elasticsearch' } },            { term: { published: true } }          ],          filter: [            { range: { views: { gte: 100 } } }          ]        }      }    }  });

console.log('Gefundene Dokumente:', body.hits.total.value); body.hits.hits.forEach(hit => { console.log(`- ${hit._source.title} (Relevanz: ${hit._score})`); });}searchDocuments();


3. Abrufen eines Dokuments nach ID

async function getDocument() {  try {    const { body } = await client.get({      index: 'articles',      id: '1'    });    console.log('Dokument:', body._source);  } catch (error) {    if (error.meta.statusCode === 404) {      console.log('Dokument nicht gefunden');    } else {      console.error('Fehler:', error);    }  }}getDocument();


4. Aktualisierung eines Dokuments (teilweise)

async function updateDocument() {  const { body } = await client.update({    index: 'articles',    id: '1',    body: {      doc: {        views: 151,        updated_at: new Date().toISOString()      }    }  });  console.log('Dokument aktualisiert, Version:', body._version);}updateDocument();


5. Löschen eines Dokuments

async function deleteDocument() {  const { body } = await client.delete({    index: 'articles',    id: '1'  });  console.log('Löschergebnis:', body.result);}deleteDocument();


Arbeiten mit Aggregationen

Aggregationen ermöglichen es, statistische Daten aus den Suchergebnissen zu gewinnen.

async function aggregateByTags() {  const { body } = await client.search({    index: 'articles',    body: {      size: 0, // Dokumente selbst nicht zurückgeben      aggs: {        popular_tags: {          terms: { field: 'tags.keywor                    

Empfehlungen