HOWTO · MongoDB
Comment installer et utiliser Elasticsearch avec MongoDB sous Windows et Ubuntu
Installez Elasticsearch sous Windows 10 ou Ubuntu 20.04, vérifiez-le localement et comprenez comment l'associer à MongoDB pour la recherche.
Sur cette page
Elasticsearch peut fonctionner à côté de MongoDB pour fournir une recherche en texte intégral sur des données d’application sélectionnées. MongoDB reste la source de vérité ; une application ou un autre processus d’intégration doit copier les modifications dans un index Elasticsearch. Ce guide couvre le démarrage d’Elasticsearch sous Windows 10 ou Ubuntu 20.04, la vérification de son point de terminaison local et les décisions qu’implique une intégration Node.js.
Qu’est-ce qu’Elasticsearch
Elasticsearch est un moteur de recherche et d’analyse distribué construit sur Apache Lucene. Il indexe des documents JSON afin que les applications puissent rechercher du texte et filtrer des champs structurés. MongoDB stocke les documents d’application et prend en charge les requêtes à usage général ; Elasticsearch maintient un index de recherche séparé optimisé pour la récupération. Ce n’est pas un remplacement de MongoDB, et les deux magasins ne se synchronisent pas automatiquement.
L’index est constitué de données dérivées. Prévoyez comment le remplir initialement, propager les insertions, mises à jour et suppressions ultérieures, et le reconstruire s’il prend du retard ou si son mappage change.
Installer Elasticsearch sous Windows 10
- Choisissez une distribution Elasticsearch qui prend en charge la version de Windows et les exigences d’environnement d’exécution Java indiquées pour cette version. L’archive officielle peut inclure un JDK groupé ; consultez les notes d’installation de la version avant d’installer Java séparément. Ne vous fiez pas aux anciens minimums Java 7 ou Java 8 comme exigences générales.
- Téléchargez l’archive Windows depuis la page officielle de téléchargement d’Elasticsearch d’Elastic et extrayez-la dans un répertoire accessible en écriture par votre compte. La structure de l’archive et les paramètres de sécurité par défaut varient selon la version.
- Ouvrez l’Invite de commandes ou PowerShell dans le répertoire
bind’Elasticsearch extrait et démarrezelasticsearch.bat. Gardez cette fenêtre ouverte pendant que le processus de premier plan s’exécute. Pour un service persistant, utilisez la configuration de service documentée pour la version sélectionnée plutôt que de traiter la fenêtre de premier plan comme une installation de service. - Laissez les fonctionnalités de sécurité de la version activées. Elasticsearch 8 et les versions ultérieures activent la sécurité par défaut ; utilisez les identifiants générés ou configurez un utilisateur approprié et les paramètres TLS. Ne définissez pas
xpack.security.enabled: falsesur une instance accessible par le réseau. La désactivation de la sécurité ne convient qu’à une expérience locale isolée sans accès réseau non fiable. - Vérifiez
http://localhost:9200dans un navigateur ou demandez-le aveccurl. Un nœud sécurisé en bon état peut demander des identifiants ou renvoyer une réponse d’authentification ; cela montre tout de même que le point de terminaison est accessible. Utilisez les identifiants et les détails HTTPS imprimés ou configurés lors de l’installation.
Si le point de terminaison ne répond pas, vérifiez la fenêtre de démarrage pour des erreurs d’amorçage ou de configuration, confirmez que le processus est toujours en cours d’exécution et vérifiez qu’un autre processus n’utilise pas le port 9200.
Installer Elasticsearch sous Ubuntu 20.04
- Sélectionnez une version dont la prise en charge et les exigences de paquets incluent Ubuntu 20.04. Ouvrez le guide officiel d’installation APT d’Elastic et suivez les étapes de dépôt et de clé de signature pour la version que vous avez choisie. Ces étapes configurent APT pour faire confiance à la clé de signature de paquets d’Elastic et récupérer les paquets depuis le dépôt d’Elastic. Les anciennes instructions basées sur
apt-keysont obsolètes ; utilisez la méthode de keyring présentée dans le guide. Les paquets Elasticsearch incluent couramment un JDK groupé adapté, donc n’installez un paquet Java séparé que si les instructions de la version sélectionnée l’exigent. - Après avoir configuré le dépôt pour la version sélectionnée, actualisez l’index des paquets d’APT avec
sudo apt-get update, puis installez Elasticsearch avecsudo apt-get install elasticsearch. Si vous avez besoin de déploiements reproductibles, vérifiez les versions disponibles dans ce dépôt avecapt-cache madison elasticsearchet installez la version exacte du paquet à l’aide desudo apt-get install elasticsearch=<package-version>. Utilisez la chaîne de version signalée par APT ; la ligne de dépôt et les versions disponibles dépendent de la version sélectionnée dans le guide d’Elastic. - Démarrez et activez le service avec
sudo systemctl enable --now elasticsearch.service. Vérifiez-le avecsudo systemctl status elasticsearch.service; inspectez le journal du service ou/var/log/elasticsearch/si le démarrage échoue. - La configuration principale est normalement
/etc/elasticsearch/elasticsearch.yml. Laissez l’authentification et la sécurité de transport activées et configurez l’exposition réseau de manière délibérée. Une configuration à nœud unique n’est pas automatiquement sûre à exposer publiquement. - Vérifiez
https://localhost:9200en utilisant les identifiants et la configuration de certificat de votre version. Un avertissement de certificat peut signifier que l’autorité de certification locale n’est pas approuvée par le client ; vérifiez le certificat ou configurez le client pour faire confiance à l’autorité de certification générée au lieu de désactiver la vérification.
Une réponse locale réussie confirme qu’Elasticsearch est en cours d’exécution. Elle ne confirme pas que les enregistrements MongoDB sont en cours d’indexation.
Pourquoi utiliser Elasticsearch avec MongoDB
MongoDB est généralement le magasin faisant autorité pour les enregistrements d’application, tandis qu’Elasticsearch sert les recherches sur un index maintenu séparément. Cette association peut fournir une recherche en texte intégral sans faire de l’index de recherche la seule copie des données. Les résultats de recherche peuvent être en retard par rapport à MongoDB, donc les applications qui ont besoin d’une cohérence immédiate doivent tenir compte de ce délai.
Une intégration Node.js a besoin d’une source de modifications MongoDB, d’un client Elasticsearch compatible avec la version de serveur choisie et d’une stratégie d’indexation explicite. Un flux typique lit les enregistrements existants pour l’index initial, écrit chaque enregistrement dans Elasticsearch à l’aide d’un ID de document stable dérivé de son _id MongoDB, puis applique les insertions, mises à jour et suppressions au fur et à mesure qu’elles se produisent. Rendez les écritures réessayables et idempotentes, enregistrez les échecs pour une relecture et fournissez un moyen de réconcilier ou de reconstruire l’index. Vérifiez un document exemple dans MongoDB et interrogez le document Elasticsearch correspondant pour vérifier les deux côtés.
L’exemple Node.js suivant montre le mappage déterministe d’un enregistrement MongoDB vers un ID de document Elasticsearch et un corps JSON. Il s’exécute sans aucun des deux services ; il démontre uniquement la forme de la charge utile, et non une écriture dans une base de données ou une synchronisation.
const mongoRecord = {
_id: "product-42",
name: "Trail shoes",
category: "footwear"
};
const elasticsearchDocument = {
id: String(mongoRecord._id),
document: {
name: mongoRecord.name,
category: mongoRecord.category
}
};
console.log(JSON.stringify(elasticsearchDocument, null, 2));
{
"id": "product-42",
"document": {
"name": "Trail shoes",
"category": "footwear"
}
}
Pour utiliser cette forme dans une application, envoyez id comme ID de document Elasticsearch et document comme sa source via un client Elasticsearch maintenu. Connectez cette écriture à la gestion des modifications MongoDB de l’application et gérez explicitement les nouvelles tentatives et les suppressions. L’exemple n’établit pas qu’un client, un plugin ou une version d’Elasticsearch particuliers sont compatibles.
L’exemple original de mongoosastic dépend d’un ancien plugin Mongoose et d’un client Elasticsearch compatible. Sa compatibilité avec une version actuelle d’Elasticsearch n’est pas établie ici, donc ne traitez pas ce fragment ni ses messages de réussite comme une intégration vérifiée. Avant de l’adopter, confirmez que le plugin prend en charge les versions exactes de Mongoose et d’Elasticsearch de votre projet. Pour une nouvelle intégration, utilisez un client maintenu et suivez ses conseils spécifiques à la version sur l’indexation et les flux de modifications ; un simple rappel de sauvegarde à lui seul ne prouve pas que l’indexation est terminée.