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/elasticsearchGrundlegende 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 Auch in der Bibliothek
Maschinelles Lernen mit Rust: Überblick über Bibliotheken für Data Science
Datenvalidierung in Java: Überblick über Bibliotheken und Ansätze
Swagger/OpenAPI-Generierung für Node.js (JavaScript): Tools und Beispiele
TypeScript QR-Code-Generator: Bibliothek qrcode und ihre Verwendung