Webux Lab

Par Studio Webux

Elasticsearch et NodeJs

TG
Tommy Gingras Studio Webux S.E.N.C 2021-04-01

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

  1. Naviguer Stack Management / Roles
  2. Cliquer sur Create Role
  3. Entrer un nom
  4. 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 et read
  5. Cliquer Create Role

Créer un usager

  1. Naviguer Stack Management / Users
  2. Cliquer sur Create User
  3. Choisir un username et un mot de passe

Créer un role mapping

  1. Naviguer Stack Management / Role Mappings
  2. Cliquer sur Create role mapping
  3. Choisir un nom, ici example_mapping
  4. Assigner le role précédement créé
  5. 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,

  1. Aller dans Stack Management / Index Pattern, Section de Kibana
  2. Puis cliquer sur Create Index Pattern
  3. 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.


Recherche