Академический Документы
Профессиональный Документы
Культура Документы
Search
Sommaire :
1.
Prsentation............................................................................................................. 3
2.
3.
4.
5.
6.
7.
2.1
2.2
2.3
2.4
Modulable et extensible..................................................................................... 4
2.5
2.6
Un moteur de recherche.......................................................................................... 4
3.1
3.2
Un moteur dindexation........................................................................................... 5
4.1
4.2
5.2
Architecture.............................................................................................................. 8
6.1
Rplication......................................................................................................... 8
6.2
Rallocation dynamique..................................................................................... 8
6.3
Indexation.......................................................................................................... 9
6.4
Recherche.......................................................................................................... 9
1.
Prsentation
http://blog.soat.fr/2013/07/elasticsearch/
2.
2.1
Dans le monde rel, les donnes peuvent tre intgres dans un systme
dinformation tout moment. La question importante du cot mtier tant : partir
de quand ces donnes peuvent-elles tre utilises ? Avec ElasticSearch, la rponse
est : immdiatement !
Orient document (au sens NoSQL du terme), toutes les donnes sont stockes sous
forme de documents JSON structurs. Tous les champs sont indexs par dfaut, et tous
les index peuvent tre utiliss dans une mme requte, pour retourner les rsultats
correspondant une recherche une vitesse impressionnante.
2.2
Aucun format de document nest impos. Lors de lajout dun document JSON,
ElasticSearch va dtecter la structure de donnes, indexer ces donnes et les rendre
consultables. Ensuite, suivant les spcificits du domaine dutilisation, il sera
intressant de structurer fonctionnellement ces documents pour personnaliser la faon
dont ces donnes seront indexes. Aprs tout, un des slogans dElasticSearch est:
Your Data, your search
2.3
perte de donnes. De plus les clusters ElasticSearch sont rsilients, ils dtectent et
suppriment les nuds dfaillants et se rorganisent pour assurer que les donnes
restent scurises et accessibles. Une gestion des conflits peut aussi tre utilise (via
un contrle de version) pour sassurer que les donnes ne sont jamais perdues en
raison de changements contradictoires de plusieurs processus.
2.4
Modulable et extensible
2.5
Apache Lucene est une librairie crite en JAVA, performante et riche en fonctionnalits.
Presque toute action sur ElasticSearch peut tre ralise en utilisant une API RESTful
basique utilisant JSON via HTTP. ElasticSearch peut tre tlcharg, utilis et modifi
gratuitement : il est disponible sous la licence Apache 2, lune des licences open
source les plus flexibles disponibles.
2.6
3.
Un moteur de recherche
3.1
un champ nom
un champ prnom
un champ numro de tlphone
voir mme des champs tels que deuxime prnom, nom de jeune fille,
Ce qui conduirait, dans une requte relationnelle SQL, un code devant interroger
diffrents champs dune table, grer les champs renseigns moiti , grer les
champs vides, etc entranant partir dune certaine volumtrie une dgradation des
performances.
Mais surtout cela oblige lutilisateur connaitre exactement dans quel champ doit se
trouver telle donne : le contact Juju doit-il tre recherch dans le champ prnom,
nom, pseudonyme, ou autre ?
3.2
4.
Un moteur dindexation
Afin dassurer une recherche facile et efficace, il existe une tape primordiale :
lindexation. Jusqu lexplosion dinternet, la classification dcimale de Dewey (cf.
Ressources) tait trs efficace pour catgoriser des objets dans une bibliothque.
Suite lexplosion du nombre de donnes collectes, il a fallu trouver dautres moyens
plus rapides et dynamiques pour rechercher des informations.
Cest pourquoi, au cur des moteurs de recherche se trouve un systme dindexation
automatique qui permet, en ne traitant quune seule fois les donnes brutes, de leur
donner de multiples liens efficients. Il nest alors plus besoin de parcourir chaque
document lors de la recherche dun terme spcifique, il suffit daller interroger la table
dindex. Ce concept correspond en quelque sorte lindex terminologique
gnralement prsent la fin dune encyclopdie et renvoyant aux diffrents articles
de celle-ci.
4.1
4.2
Lors du dversement des documents dans ElasticSearch, ils sont analyss par un
Analyzer. Celui-ci est compos de 2 lments principaux : le tokenizer et le filtre,
fonctionnant de pair. Le Tokenizer se charge de dcouper les diffrents lments dune
chane en tokens. Le Filtre, quant lui, se charge de supprimer ou de transformer ces
tokens. En fonction des besoins, ceux-ci pourront se trouver cumuls afin doffrir la
meilleur gestion possible des donnes de chaque application cliente et de ses
utilisateurs. En voici quelques exemples :
asciifolding filter
stemmer filter (french) : permet de regrouper les termes franais ayant une
mme racine sur un mme index (ainsi, lutilisateur na pas besoin de rflchir
aux notions de genre ou de nombre dans ses recherches)
5.
Rechercher des donnes dans des documents parfaitement indexs, cest bien ! Mais
maintenant il serait bon de pouvoir facilement jouer avec ces donnes pour les faire
parler
5.1
Date Histogram : une histogram facet spcifique fonctionnant sur des champs
date
Filter : permet de retourner un nombre de hits correspondant un filtre
Query : permet de retourner un nombre de hits correspondant une requte
Statistical : permet de calculer des donnes statistiques sur un champ
numrique. Les donnes statistiques incluent le dcompte, le total, la somme
des carrs, la moyenne, le minimum, le maximum, la variance et lcart type
Terms Stats : combine la fois les facettes term et statistical.
5.2
6.
Architecture
Il est maintenant temps daller faire un petit tour sous le capot pour comprendre
comment ElasticSearch est construit. Et avant tout, pour viter dtre perdu, quelques
termes lexicaux :
6.1
Rplication
Afin dassurer une prennit des donnes, partir du moment o il existe 2 nuds,
lun sert de rplication lautre. Ainsi, si lun tombe, les donnes ne sont pas perdues.
Il ny a pas de limite au nombre de rplica. Plus il y a dutilisateurs, plus il peut tre
intressant davoir des rplicas (recherche distribue).
6.2
Rallocation dynamique
Lors du rajout de nuds, les shards sont rallous dynamiquement. Un bon tuning
consistant trouver le bon quilibre entre le nombre de nuds, shards et rplicas
pour satisfaire au mieux aux besoins fonctionnels.
6.3
Indexation
Lors de lindexation dun document, celui-ci est envoy au nud principal, puis est
automatiquement allou un shard et rpliqu.
6.4
Recherche
7.
8.
8.1
Le master node est le noeud du cluster qui est charg de lallocation des shards
parmi les diffrents noeuds. Il est donc important qu un instant T, il y ait un et un seul
master node.
Imaginons quune interruption rseau empche temporairement les noeuds de votre
cluster de communiquer entre eux.
Certains noeuds ne pouvant plus parler au master node vont dclencher
spontanment llection dun nouveau master.
Le rsultat de cette lection sera ce quon appelle un split-brain : le cluster se trouve
spar en deux avec deux master node diffrents (et donc une dsynchronisation
des indexations).
Il sagit bien sr dune situation viter absolument. Heureusement, il existe une
solution : modifier le paramtre discovery.zen.minimum_master_nodes, dfini de
la manire suivante :
The discovery.zen.minimum_master_nodes allows to control the minimum number of
master eligible nodes a node should see in order to operate within the cluster.
La solution au split-brain consiste donc
dfinirdiscovery.zen.minimum_master_nodes avec le nombre de noeuds du cluster / 2 +
1. Sil y a 8 noeuds dans votre cluster, vous renseignerez alors cette valeur 5.
Ainsi, 5 noeuds votants sont ncessaires llection dun nouveau master. 2 machines
ne peuvent donc pas obtenir suffisamment de votes pour tre lues en simultan.
8.2
MasterNotDiscoveredException
Voil, tout va pour le mieux dans le meilleur des mondes, votre cluster fonctionne et
vous souhaitez dconnecter une partie de vos noeuds.
Imaginons que nous ayons 8 noeuds sur notre cluster et que nous souhaitions passer
sur 4 noeuds. Le paramtre discovery.zen.minimum_master_nodes de dpart vaut 5.
soucis
Si le master est parmi les noeuds stopps => MasterNotDiscoveredException
Tout se passe comme si le cluster nappliquait plus le bon quota, puisquun nouveau
master na pas t lu.
Voici mon analyse du problme :