Elastic Search Cluster + Accès avec un client NodeJS
Introduction
L’objectif est d’apprendre comment utiliser elasticsearch cloud hébergé directement avec elastic.co Il offre un trial de 14 jours.
L’intégration est faite avec NodeJS et utilise le module @elastic/elasticsearch
.
Cette solution fonctionne aussi très bien avec la solution Open Distro for Elasticsearch, si vous êtes intéressé par cette solution, je peux aussi ajouter les détails.
Authentification pour sécuriser elasticsearch
Créer un role
- Naviguer Stack Management / Roles
- Cliquer sur Create Role
- Entrer un nom
- La section Index privileges, pour l’indice sélectionner la regex qui vous convient, ici je vais mettre
*
et pour les permissions,create_index
,index
etread
- Cliquer Create Role
Créer un usager
- Naviguer Stack Management / Users
- Cliquer sur Create User
- Choisir un username et un mot de passe
Créer un role mapping
- Naviguer Stack Management / Role Mappings
- Cliquer sur Create role mapping
- Choisir un nom, ici
example_mapping
- Assigner le role précédement créé
- créer un Mapping rule, puis pour le username, entrez l’usager créé précédement
Client NodeJS
Pour trouver le cloudId, aller directement dans votre compte elastic.co, puis naviguer : Cloud / Deployments / cluster-name, vous aller voir Cloud id avec une longue string.
Fichier elasticsearch.js
:
const { Client } = require("@elastic/elasticsearch");
const esClient = new Client({
cloud: {
id: "cluster-name:cluster-key",
},
auth: {
username: "my-username",
password: "my-password",
},
});
function PutDocument(index, id, document) {
console.debug(index);
console.debug(id);
return esClient.index({
index,
id,
refresh: true,
body: document,
});
}
module.exports = {
PutDocument,
};
Puis le test, es.spec.js
:
jest
est utilisé pour lancer le test.
const { putDocument } = require("../src/elasticsearch");
describe("Test save content to elastic search", () => {
test("The specified content", async () => {
const domain = "webuxlab.com";
const documentId = "accueil";
const content = { p: "<p>this is a test</p>", url };
await putDocument(domain, documentId, content).catch((e) => {
console.error("Elastic Search Error");
console.error(e);
throw e;
});
});
});
Ensuite vous devrez voir l’index dans le cluster,
- Aller dans Stack Management / Index Pattern, Section de Kibana
- Puis cliquer sur Create Index Pattern
- Entrer le nom de votre index ou une regex qui vous convient
Valider que le pattern est bien configuré en allant à la page Discover de la section Analytics, Choisir le nouvel index, puis vous devriez avoir votre test.