• 1. Introduction au moteur de recherche avec Elasticsearch et Node.js

  • 2. Étape 1 : déployer Elasticsearch 8 avec Docker

  • 3. Étape 2 : créer un index avec mapping personnalisé

  • 4. Étape 3 : indexer et rechercher avec Node.js

  • 5. Bonnes pratiques et optimisation

  • 6. Conclusion

configurer elasticsearch et node.js pour un moteur de recherche performant : guide technique

Image de configurer elasticsearch et node.js pour un moteur de recherche performant : guide technique

Introduction au moteur de recherche avec Elasticsearch et Node.js

Dans ce tutoriel dédié aux développeurs, nous allons mettre en place un moteur de recherche performant pour votre application web en combinant Elasticsearch 8 et Node.js. Vous découvrirez comment installer Elasticsearch en Docker, définir un mapping adapté, indexer des données puis interroger votre cluster via le client officiel @elastic/elasticsearch. À la clé : des temps de réponse décisifs pour l’expérience utilisateur et des gains de performance mesurables.

Étape 1 : déployer Elasticsearch 8 avec Docker

# Créer un réseau Docker dédié  
docker network create es-net  

# Lancer un nœud Elasticsearch  
docker run -d --name es-node1 --network es-net \  
  -e "discovery.type=single-node" \  
  -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \  
  -p 9200:9200 \  
  docker.elastic.co/elasticsearch/elasticsearch:8.6.0

Vérifiez le bon démarrage :

curl -s http://localhost:9200 | jq .version.number  
# Doit afficher 8.6.0 ou version installée

Étape 2 : créer un index avec mapping personnalisé

Pour optimiser la recherche texte et la pondération des champs, nous définissons un mapping précis :

curl -X PUT "localhost:9200/produits" -H 'Content-Type: application/json' -d '  
{  
  "settings": {  
    "number_of_shards": 1,  
    "number_of_replicas": 1  
  },  
  "mappings": {  
    "properties": {  
      "title":     { "type": "text", "analyzer": "standard" },  
      "description": { "type": "text", "analyzer": "french" },  
      "price":     { "type": "double" },  
      "available": { "type": "boolean" },  
      "createdAt": { "type": "date" }  
    }  
  }  
}'

Étape 3 : indexer et rechercher avec Node.js

Installez le client Elasticsearch :

npm install @elastic/elasticsearch

Exemple de code pour indexer un document :

const { Client } = require('@elastic/elasticsearch');  
const es = new Client({ node: 'http://localhost:9200' });  

async function indexProduct(product) {  
  await es.index({  
    index: 'produits',  
    id: product.id,  
    document: product  
  });  
  await es.indices.refresh({ index: 'produits' });  
}  

// Exemple d’usage  
indexProduct({  
  id: '1',  
  title: 'Chaussures running',  
  description: 'Confort maximisé pour marathon',  
  price: 79.99,  
  available: true,  
  createdAt: '2023-05-15'  
});

Pour la recherche en full-text :

async function searchProducts(query) {  
  const { hits } = await es.search({  
    index: 'produits',  
    query: {  
      multi_match: {  
        query,  
        fields: ['title^2', 'description']  
      }  
    }  
  });  
  return hits.hits.map(hit => hit._source);  
}  

searchProducts('running marathon').then(console.log);

Bonnes pratiques et optimisation

  • Shards et réplicas : ajustez le nombre de shards et replicas selon le volume de données. (services application web)
  • Analyseurs personnalisés : utilisez edge_ngram pour l’autocomplétion et french pour la langue.
  • Bulk indexing : privilégiez l’API _bulk pour insérer rapidement de gros volumes.
  • Monitoring : intégrez Elasticsearch Exporter avec Prometheus/Grafana pour suivre l’usage CPU, JVM et latence des requêtes. (technologies Docker & Node.js)
  • Retry et backoff : gérez les erreurs de connexion avec un mécanisme de retry exponentiel dans votre client Node.js.

Conclusion

En combinant Elasticsearch 8 et Node.js, vous obtenez un moteur de recherche rapide, scalable et adapté à la croissance de votre application. Mesurez régulièrement la latence (objectif <20 ms) et ajustez vos settings pour maintenir des performances optimales. Pour aller plus loin, pensez à sharder vos données géographiques ou temporelles.

Besoin d’accompagnement pour intégrer Elasticsearch dans votre projet ? Contactez nos experts pour une séance de consulting IT offerte.

Image de les 10 podcasts tech immanquables pour entrepreneurs en 2026

les 10 podcasts tech immanquables pour entrepreneurs en 2026

Découvrez les 10 podcasts tech incontournables pour entrepreneurs en 2026, entre interviews de fondateurs, décryptages IA, no-code et conseils pratiques
Image de google cloud lance ai app builder pour accélérer la création low-code d’applications métiers

google cloud lance ai app builder pour accélérer la création low-code d’applications métiers

Découvrez comment AI App Builder de Google Cloud mêle low-code et IA générative pour créer en un temps record des applications métiers à moindre coût.
Image de superviser des microservices node.js avec prometheus et grafana : guide technique complet

superviser des microservices node.js avec prometheus et grafana : guide technique complet

Instrumenter un microservice Node.js, dockeriser avec Docker Compose, collecter des métriques Prometheus, visualiser dans Grafana et configurer des alertes.
DEVIS GRATUIT

Un projet en tête ? Vous avez des questions ?

Contactez nous pour recevoir un devis gratuitement, des réponses à vos questions ou une séance de consulting offerte avec l'un de nos experts :

Nous contacter