Introduction à ElasticSearch



Documents pareils
OpenPaaS Le réseau social d'entreprise

Bases de Données NoSQL

Sommaire. 3. Les grands principes de GFS L architecture L accès de fichier en lecture L accès de fichier en écriture Bilan

Comprendre et optimiser la base de données WordPress WP TECH 2014

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

Alfstore workflow framework Spécification technique

Bases de données documentaires et distribuées Cours NFE04

Cours 8 Not Only SQL

Paris Airports - Web API Airports Path finding

AVRIL Au delà de Hadoop. Panorama des solutions NoSQL

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Installation de Premium-RH

4. SERVICES WEB REST 46

Open Source Job Scheduler. Installation(s)

COURS 5 Mettre son site en ligne! Exporter son site avec WordPress Duplicator Installer un logiciel FTP Faire le suivi des visites de son site avec

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Gestion des sauvegardes

Créer une base de données vidéo sans programmation (avec Drupal)

LOSLIER Mathieu. Filière Informatique et Réseau 1 ère année. TP DNS. Responsable : LOHIER Stephane. Chargé de TD : QUIDELLEUR Aurélie

NoSQL. Introduction 1/30. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Installation de Concrete 5

La base de données XML exist. A. Belaïd

DOMAIN NAME SYSTEM. CAILLET Mélanie. Tutoriel sur le DNS. Session Option SISR

Bases de données documentaires et distribuées Cours NFE04

Module d anonymisation

IBM DB2 Alphablox. d administration GC

Datalift. + + Architecture Modularité Déploiements. d j = 09/04/2015 Laurent BIHANIC

GUIDE DE DEMARRAGE V1.02

Fouillez facilement dans votre système Big Data. Olivier TAVARD

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

GOUTEYRON ALEXIS. SIO2 N candidat: UEpreuve E4. USituation professionnelle 2. serveurs de fichiers. Uen haute disponibilité

Le système de gestion de version Git et GitHub

A. Architecture du serveur Tomcat 6

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

«clustering» et «load balancing» avec Zope et ZEO

Automatisation de l administration système

Étude de l application DNS (Domain Name System)

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Cellier Clément, Maginot Quentin, Tripier Axel, Zaorski Jean, Zini Robin. 18 mars 2015

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

MapReduce et Hadoop. Alexandre Denis Inria Bordeaux Sud-Ouest France ENSEIRB PG306

Guide d installation de SugarCRM Open Source version 4.5.1

Architectures Web Services RESTful

FileMaker Server 14. Guide de démarrage

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Accès aux bases de données

Présentation Alfresco

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

les techniques d'extraction, les formulaires et intégration dans un site WEB

Mise en place d un cluster. De basculement. Et DHCP Failover. Installation. Préparation. Vérification

Installation de Joomla avec Filezilla

Stocker des données sur Amazon S3

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Hands on Openstack : Introduction

Intégration e-commerce. Version 0.5

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Hibernate vs. le Cloud Computing

Guide d installation JMap 5.0

RELEASE NOTES. Les nouveautés Desktop Manager 2.8

Encryptions, compression et partitionnement des données

Les journées SQL Server 2013

TESIAL sprl. Aide pour l installation et la gestion du backup. 27 novembre 2009

Cloud public d Ikoula Documentation de prise en main 2.0

GUIDE D INSTALLATION. Portaneo Enterprise Portal version 4.0

Programmation parallèle et distribuée (Master 1 Info )

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

PHP. PHP et bases de données

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

Cours Base de données relationnelles. M. Boughanem, IUP STRI

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Le Langage SQL version Oracle

COMMUNICATION TECHNIQUE N TCV060 Ed. 01. OmniVista 4760 Nb de pages : 18 Date : URGENTE NON URGENTE TEMPORAIRE DEFINITIVE

Quick Start Installation de MDweb version 2.3

L Authentification de Librex dans Active Directory (Kerberos)

Augmenter la disponibilité des applications JEE grâce au clustering : Le projet open source JShaft

Network Efficiency Monitoring - version 2

BIRT (Business Intelligence and Reporting Tools)

DNS. Olivier Aubert 1/27

CAS, la théorie. R. Ferrere, S. Layrisse

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Architecture Orientée Service, JSON et API REST

Machine virtuelle Java pour Palm TX

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

Windows Internet Name Service (WINS)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

GPI Gestion pédagogique intégrée

Mise en œuvre des serveurs d application

Domain Name System. F. Nolot

Structure fonctionnelle d un SGBD

Configuration des grappes de serveurs d applications ADOBE LIVECYCLE ES3 à l aide de JBOSS

Gestion des références bibliographiques. Comment simplifier la gestion des références bibliographiques?

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Service d'annuaire Active Directory

Transcription:

Introduction à ElasticSearch Présentée par : Romain Pignolet Lundi 7 Juillet 2014

Sommaire 1 Présentation de Elasticsearch 2 Installation et exemples simples 3 API Rest 4 Comment fonctionne Elasticsearch? 5 Cluster 6 Couplage avec MongoDB

Présentation de Elasticsearch Elasticsearch est un outil de recherche distribué en temps réel et un outil d analyse. Il est utilisé pour recherche full text recherche structurée analyse et les trois combinés

Qui utilise Elasticsearch? Wikipedia (http://fr.wikipedia.org) The Guardian (http://www.theguardian.com) StackOverflow (http://stackoverflow.com/) GitHub (https://github.com/) Goldman Sachs (http://www.goldmansachs.com/)

Dépendances et fonctionnalités Elasticsearch a besoin de : Apache Lucene, un moteur de recherche full-text. Java donc la JVM est requise. Elasticsearch est: un stockage de document temps réel distribué où tous les champs sont indéxés et consultable un moteur de recherche distribué avec de l analyse temps réel capable de supporter la monté en charge avec une centaine de servers et des peta-octets de données structurées ou non

Sommaire 1 Présentation de Elasticsearch 2 Installation et exemples simples 3 API Rest 4 Comment fonctionne Elasticsearch? 5 Cluster 6 Couplage avec MongoDB

Installation et lancement d Elasticsearch Simplement télécharger l archive sur le site officiel (http://www.elasticsearch.org/overview/elkdownloads/) et décompresser. Pour le lancer, allez dans le répertoire créé par la décompression et lancer cette commande :./ bin / elasticsearch

Installation et lancement d Elasticsearch Testez le en lançant cette commande : curl ' http :// localhost :9200/? pretty ' Vous devriez voir une réponse comme cela : { " status " : 200, " name " : " Brother Nature ", " version " : { " number " : " 1.1.0 ", " build_hash " : " 2181 e113dea80b4a9e31e58e9686658a2d46e363 ", " build_timestamp " : " 2014-03 -25 T15 :59:51 Z", " build_snapshot " : false, " lucene_version " : " 4.7 " }, " tagline " : " You Know, for Search " }

Communication avec Elasticsearch Il y a deux manières de communiquer avec Elasticsearch: Java API sur le port 9300 Restful API sur le port 9200 Dans cette présentation nous ne parlerons que de l API Rest.

Comment sont stockés les documents? Orienté Document Le contenu de chaque Document est indexé Un Document possède un Type (qui défini son mapping) Les Types sont contenus dans un Index Quelques comparaisons avec une base de donnée relationnelle : Relational DB Base de données Tables Lignes Colonnes Mongo DB Base de données Collections Documents Champs Elasticsearch Index Types Documents Champs

Sommaire 1 Présentation de Elasticsearch 2 Installation et exemples simples 3 API Rest 4 Comment fonctionne Elasticsearch? 5 Cluster 6 Couplage avec MongoDB

API Rest - Type de requête PUT : création ou modification d un document GET : récupération d un document HEAD : test si un document existe DELETE : suppression d un document Retourne un code de retour HTTP (200, 404, etc.) une réponse encodé en JSON (sauf pour les requêtes HEAD)

Requête PUT - Exemple La commande suivante sauvegarde un document dans l index "megacorp" avec comme type "employee" et avec l id "1" : curl - XPUT ' localhost :9200/ megacorp / employee /1' -d ' { " first_name " : " John ", " last_name " : " Smith ", " age " : 25, " about " : " I love to go rock climbing ", " interests " : [ " sports ", " music " ] }'

Requête GET - Exemple curl - XGET ' localhost :9200/ megacorp / employee /1? pretty ' { } " _index " : " megacorp ", " _type " : " employee ", " _id " : "2", " _version " : 1, " found ": true, " _source " : { " first_name " : " John ", " last_name " : " Smith ", " age " : 25, " about " : " I love to go rock climbing ", " interests " : [ " sports ", " music " ] }

Requête GET - Endpoint _search Nous allons rechercher tous les employés avec cette requête : curl - XGET ' localhost :9200/ megacorp / employee / _search? pretty ' Par défaut, la recherche retourne 10 résultats dans le tableau hits. { " took " : 3, " timed_out " : false, " _shards " : {... }, " hits " : { " total " : 1, " max_score " : 1.0, " hits " : [ {... } ] } } Note : la recherche inclue l intégralité du document dans le champ _source.

Requête GET - Endpoint _search avec l option query et Query DSL Vous pouvez utiliser l option de query (q) pour spécifier une simple demande comme : curl -XGET ' localhost :9200/ megacorp / employee / _search?q= last_name : Smith & pretty ' Cette requête demande tous les employés dont le last_name est égal à "Smith". Ci-dessous la même requête mais en utilisant le Query DSL de Elasticsearch : curl - XGET ' localhost :9200/ megacorp / employee / _search? pretty ' -d ' { " query " : { " match " : { " last_name " : " smith " } } }'

Requête GET - Endpoint _search avec l option query et Query DSL Un autre exemple avec l utilisation d un filtre pour trouver tous les employés dont le nom de famille est "Smith" et agés de plus de 30 ans : curl - XGET ' localhost :9200/ megacorp / employee / _search? pretty ' -d ' { " query " : { " filtered " : { " filter " : { " range " : { " age " : { "gt" : 30 } } }, " query " : { " match " : { " last_name " : " smith " } } } } }'

Sommaire 1 Présentation de Elasticsearch 2 Installation et exemples simples 3 API Rest 4 Comment fonctionne Elasticsearch? 5 Cluster 6 Couplage avec MongoDB

Indexation (champ _all) et metadata Toutes les données de chaque champ sont indexées Quand un document est indexé : 1 Récupération de tous les champs 2 Concaténation de ces champs dans une grosse chaine de caractères 3 Sauvegarde cette chaine dans le champ spécial _all _index : Où le document est stocké. _type : Représente le mapping entre les champs et leurs types. _id : L identificant unique du document.

Types and Mappings Pour connaître le mapping pour un type vous pouvez faire une requête GET : curl - XGET ' localhost :9200/ megacorp / _mapping / employee? pretty ' { } " megacorp " : { " mappings " : { " employee " : { " properties " : { " about " : { " type " : " string " }, " age " : { " type " : " long " }, " first_name " : { " type " : " string " }, " interests " : { " type " : " string " }, " last_name " : { " type " : " string " } } } } }

Sommaire 1 Présentation de Elasticsearch 2 Installation et exemples simples 3 API Rest 4 Comment fonctionne Elasticsearch? 5 Cluster 6 Couplage avec MongoDB

Definitions Definition Un Noeux : est une instance d Elasticsearch en cours d exécution est dans un cluster communique avec les autres noeuds du cluster Noeux 1 Noeux 2 Noeux 3 Figure: Cluster simple avec 3 noeuds vides

Definitions Definition Un Noeud Maître : est un noeud élu gère les changements dans le cluster : creation ou suppression d un index ajout ou suppression d un noeud du cluster Noeux 1 - Master Noeux 2 Noeux 3 Figure: Cluster simple avec 3 noeuds vides et 1 maître

Definitions Definition Un Shard: est une "unité de travail" bas niveau est une seule instance de Lucene est un moteur de recherche complet Nos documents sont stockés et indexés dans les Shards, mais nous ne nous adressons pas directement à eux : nos applications s adressent à un index. Noeux 1 - Master S S Noeux 2 S S Noeux 3 S S Figure: Cluster simple avec 3 noeuds vides, 1 maître et 6 shards

Definitions Definition Un Shard primaire : contient tous les documents dans un index peut avoir d autres Shards primaires pour séparer les données (similaire au RAID 0) Le nombre de Shard primaire pour un index est fixé au moment de la création de l index. Node 1 - Master S P1 Node 2 S S Node 3 P0 S Figure: Cluster simple avec des Shards primaires

Definitions Definition Un Shard replica : est une copie d un Shard primaire (similaire au RAID 1) est utilisé pour fournir des copies redondantes des données est utilisé pour répondre au requête de lecture comme chercher un document Le nombre de Shard replica peut être changé à n importe quel moment. Node 1 - Master R0 P1 Node 2 R0 R1 Node 3 P0 R1 Figure: Cluster simple avec des Shards primaires

Statut du cluster Pour savoir le statut du cluster : curl -XGET 'http :// localhost :9200/ _cluster / health? pretty ' Le champ status donne une indication global sur le fonctionnement du cluster : vert : Tous les Shards primaires et replicas sont actifs (Le cluster fonctionne et la tolérance aux pannes est assurée). jaune : Tous les Shards primaires sont actifs, mais des Shards replicas ne sont pas tous actifs (Le cluster fonctionne mais si un noeud tombe la tolérance aux pannes n est pas assurée). rouge : Des Shards primaires sont inactifs (Le cluster n est pas fonctionnel).

Gestion des Shards Créons un index megacorp en spécifiant que nous voulons 3 Shards primaires et 1 Shard replica (pour chaque primaire) : curl - XPUT ' http :// localhost :9200/ megacorp ' -d ' { " settings " : { " number_of_shards " : 3, " number_of_replicas " : 1 } }' Node 1 - Master P0 P1 P2 Figure: 1 noeuds avec 3 shards primaires Dans cet état le statut du cluster est "jaune" car les Shards replicas ne peuvent pas être lancés.

Tolérance aux pannes 1 Noeud Un point de défaillance La solution est simple : lancer un nouveau Noeud Le nouveau Noeud rejoindra automatiquement le cluster s il a le même nom de cluster (cluster.name). Node 1 - Master P0 P1 P2 Node 2 R0 R1 R2 Figure: 2 noeuds avec 3 shards primaires et 1 shard replica pour chaque shard primaire Le statut cluster est maintenant "vert".

Sommaire 1 Présentation de Elasticsearch 2 Installation et exemples simples 3 API Rest 4 Comment fonctionne Elasticsearch? 5 Cluster 6 Couplage avec MongoDB

Prérequis Le plugin a une dépendance avec elasticsearch-mapper-attachment :./ bin / plugin -- install elasticsearch / elasticsearch - mapper - attachments /2.0.0 Ensuite on install le plugin river pour MongoDB :./ bin / plugin -- install com. github. richardwilly98. elasticsearch / elasticsearch - river - mongodb /2.0.0

Configuration de la river - Exemple curl - XPUT " localhost :9200/ _river / test / _meta " -d ' { " type ": " mongodb ", " mongodb ": { " servers ": [ { " host ": " 10.75.9.193 ", " port ": 27017 } ], "db": " test ", " collection ": " users " }, " index ": { " name ": " users. idx ", " type ": " users " } }'

Fin Merci pour votre attention :)