2 décembre 2019 admin

ElasticSearch

Qu’est-ce qu’Elasticsearch ?

ElasticSearch est une base de données NoSql et un moteur de recherche de données puissant basé sur Lucène. Il a été développé en Java et est distribué de façon open source sous licence Apache 2.0. En peu de temps vous pouvez disposer d’un moteur de recherche clustérisé, automatiquement sauvegardé et répliqué, consultable via une API REST. Il permet d’effectuer et de combiner des recherches variées sur des données structurées, non-structurées, de géolocalisation. Il utilise des API RESTful et JSON ce qui lui permet de dialoguer avec tous les langages.

  • Rapide Des recherches en temps réel.
  • Scalable D’un serveur local à une architecture distribuée gérant des péta octets de données
  • Tolérance aux pannes Haute disponibilité, réplication et sauvegarde automatique
  • Modulaire Un système de plugins permet d’ajouter des fonctionnalités à celles de base proposées par Elasticsearch : sécurité, monitoring, alerting, reporting, simplicité.

Concept de base

Un cluster Elasticsearch peut contenir plusieurs index qui, à leur tour, contiennent plusieurs types. Ces types contiennent plusieurs documents.

Image 1

Correspondance entre une base de données relationnelle et Elasticsearch

SGBDR Elasticsearch
Base de données Index
Table Type
Ligne Document
Colonne Champ ou propriété

Document

Un simple enregistrement dans un index Elasticsearch. Un document est structuré comme un objet JSON.

Index

Un index est un espace logique de stockage de documents de même type, découpé sur un à plusieurs shards.il peut être répliqué sur zéro ou plusieurs shards. Quand un shard tombe en panne le contenu est répliqué dans un réplicat. L’index correspond à une base de données relationnelle (exemple : MySQL), il est composé d’un ou plusieurs types .
Exemple : base de données : CATALOGUE

Shards

C’est une partition de l’index on distingue deux types de shards :

  • Primary Shards : Par défaut, l’index est découpé en 5 Primary Shards.
  • Secondary Shards : Il s’agit de copies de Primary Shards.

Node

Un node correspond à un processus d’Elasticsearch en cours d’exécution.

Comment installer Elasticsearch ?

Le prérequis à l’installation d’ElasticSearch est l’installation de Java 6 sur la machine destinée à héberger Elasticsearch. Assurez-vous donc que Java 6 est installé sinon installez-le, puis téléchargez Elasticsearch le zip sur https://www.elastic.co/fr/downloads/

Image 2

Une fois l’archive téléchargée, il suffit de la décompresser pour installer ElasticSearch :

Image 3

Le répertoire bin contient le script de lancement Elasticsearch et le script d’installation de plugins (respectivement Elasticsearch.bat et plugin.bat pour Windows). Cliquez sur le fichier Elasticsearch.bat.

Image 4

ElasticSearch est bien démarré (started) la dernière ligne le confirme et on peut vérifier qu’ElasticSearch s’est correctement lancé il suffit de taper URL suivante http://localhost:9200/ dans un navigateur Web. Si tout se passe bien, on aura l’interface ci-dessous : « status 200 » confirme que notre serveur Elasticsearch fonctionne.

Image 5

Comment indexer et rechercher avec ElasticSearch ?

ElasticSearch utilise des API RESTful et JSON ce qui lui permet de dialoguer avec tous les langages. Il supporte les principales méthodes HTTP (GET, DELETE, PUT et POST).

http://host:port/index/type/[_action|id]

  • index : Nom de l’index
  • type : Nom du type de document
  • _action : Nom de l’action à effectuer
  • id : Identifiant du document

Indexation d’un document

Nous allons indexer le document article dans l’index EXteam pour cela j’utilise Postman (https://www.getpostman.com/ ) qui est un testeur d’API :

Après avoir cliqué sur Send, l’index EXteam sera créé ainsi que le type article qui contient le document

Figure 1 : Création d’un index et indexation d’un document

Image 6

Rechercher d’un document par son ID

Pour chercher un document par son ID il faut :

Après la validation nous retrouvons notre document que nous avions indexé sous format JSON.

Image 7

Recherche d’un document par texte (ex : Elasticsearch)

Pour chercher un document par son ID il faut :

Après la validation nous retrouvons le document qui contient le mot Elasticsearch.

Image 8

FOSElasticaBundle

Installer FOSElasticaBundle pour Symfony2,3

Après avoir installé Elasticsearch, lancez la commande ci-dessous pour installer le bundle

$ composer require friendsofsymfony/elastica-bundle

N’oublions pas d’ajouter le Bundle dans le fichier AppKernel.php :

Image 9

Maintenant que le bundle est installé passons à sa configuration.

Configuration du bundle

Image 10

Image 11

Mapping

Ajouter au même niveau settings les lignes suivantes :

Image 12

Image 13

Importer le fichier de mapping elasticsearch.yml dans config.yml :

Image 14

Indexation des tables

Image 15

Faites une recherche. Exemple de fonction de recherche :

Image 16

Image 17

 

Mamadou BAKHAYOKHO

Partager sur LinkedIn Partager sur Facebook Partager sur Twitter Tagged:

Contact

N’hésitez pas à nous solliciter pour vos projets ou pour en savoir plus sur nos expertises, nos offres et nos domaines de compétences.