SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
ELASTIC SEARCH 
DIGITAL APÉRO SILICONCOMTÉ 
par Cédric Nirousset - @Nyr0
PRÉSENTATION 
Développeur web indépendant depuis 2004 
PHP 
Symfony 
MySQL 
Intégration / Responsive 
Elastic Search 
etc... 
nyroDev
Open source 
Un indexeur de documents (basé sur Apache Lucene) 
Une API HTTP/RESTFul/JSON 
Distribué 
Simple et puissant à la fois 
En quasi temps réel 
Mais ce n'est pas une base de données
ROUTE DES COMMUNES 
Editorial et contenus sur : 
4 départements de Franche-Comté 
67 communautés de communes de Franche-Comté 
103 cantons de Franche-Comté 
1 785 communes de Franche-Comté 
5 000 entreprises de Franche-Comté 
2 524 activités 
soit un total d'environ 9 500 lignes, stockées en MySQL
RECHERCHE MYSQL : "NYRODEV" 
UNIQUEMENT SUR LE TITRE 
SELECT * FROM entreprise WHERE name LIKE "%nyrodev%" 
12ms
RECHERCHE MYSQL : "NYRODEV" 
SUR LES CHAMPS TEXTES 
SELECT * FROM entreprise 
WHERE name LIKE "%nyrodev%" OR responsable LIKE "%nyrodev%" 
OR description LIKE "%nyrodev%" OR activite_principale LIKE "%nyrodev%" 
OR activite_secondaire LIKE "%nyrodev%" 
13ms
RECHERCHE MYSQL : "NYRODEV NIROUSSET" 
UNIQUEMENT SUR LE TITRE 
SELECT * FROM entreprise WHERE name LIKE "%nyrodev%" AND name LIKE "%nirousset%" 
13ms 
0 résultat
RECHERCHE MYSQL : "NYRODEV NIROUSSET" 
SUR LES CHAMPS TEXTES 
SELECT * FROM entreprise 
WHERE (name LIKE "%nyrodev%" OR responsable LIKE "%nyrodev%" 
OR description LIKE "%nyrodev%" OR activite_principale LIKE "%nyrodev%" 
OR activite_secondaire LIKE "%nyrodev%") 
AND (name LIKE "%nirousset%" OR responsable LIKE "%nirousset%" 
OR description LIKE "%nirousset%" OR activite_principale LIKE "%nirousset%" 
OR activite_secondaire LIKE "%nirousset%") 
14ms
ET ON POURRAIT AJOUTER : 
D'autres champs textes existants 
Recherche sur la commune (jointure) 
Recherche sur les publicités (jointure) 
ET ON NE CHERCHE QUE SUR LES 
ENTREPRISES !
QUELQUES TERMES 
Document : Un object JSON représentant les données 
Penser NoSQL 
(donc jointures incluses et "applaties") 
Type : Regroupe des documents du même type 
Index Espace logique de stockage des documents dont les 
types sont fonctionnellement communs
API DE BASE D'ELASTIC SEARCH 
API REST : http://host:port/[index]/[type]/[_action/_id] 
Documents : 
curl -XPUT http://localhost:9200/rdc/entreprise/1 
curl -XGET http://localhost:9200/rdc/entreprise/1 
curl -XDELETE http://localhost:9200/rdc/entreprise/1 
Recherche : 
curl -XPOST http://localhost:9200/rdc/entreprise/_search 
curl -XPOST http://localhost:9200/rdc/_search 
curl -XPOST http://localhost:9200/_search
INDEXER UN DOCUMENT 
curl -XPUT http://localhost:9200/rdc/entreprise/1 -d ' 
{ 
"name": "nyroDev", 
"responsable": "Cédric Nirousset", 
"description": "Développeur web", 
"activite_principale": "Développement web", 
"activite_secondaire": "Hébergement web, conseils", 
"commune": { 
"name": "Besançon", 
"code_postal": "25000" 
} 
}' 
Réponse : 
{ 
"ok": true, 
"_index": "rdc", 
"_type": "entreprise", 
"_id": "1" 
}
GAGNER DU TEMPS DE DÉVELOPPEMENT 
De nombreuses librairies dans beaucoup de langages existes 
pour faire des requêtes en objet 
Elastica en PHP 
Des libraires permettent d'ajouter/modifier/supprimer les 
données avec les modifs en Base de données 
Avec Symfony, FOSElasticaBundle
RIVERS 
C'est Elastic Search qui va lire et indexer les données. 
CouchDb 
MongoDb 
JDBC (pour MySQL par exemple) 
RabbitMQ 
Twitter 
Wikipedia 
FileSystem 
IMAP/POP3 Email 
RSS 
Git ou GitHub 
Et plein d'autres
CHERCHER 
curl -XPOST http://localhost:9200/rdc/entreprise/_search?q=nyrodev 
Résultat : 
{ 
"took": 1, 
"timed_out": false, 
"_shards": { "total": 5, "successful": 5, "failed": 0 }, 
"hits": { 
"total": 1, 
"max_score": 0.61319745, 
"hits": [{ 
"_index": "rdc", 
"_type": "entreprise", 
"_id": "1", 
"_score": 0.61319745, 
"_source": { "name": "nyroDev", /* ... */ } 
}] 
} 
}
LES RÉSULTATS 
10 résultats sont retournés par défaut 
paramétrable avec from et size 
Le tri se fait par défaut sur le _score 
paramétrable avec _sort
ET SI ON COMPARAIT AVEC MYSQL ? 
Recherche global sur tout l'index rdc (entreprise, publicité, 
communes, etc...) 
http://localhost:9200/rdc/_search?q=nyrodev 
8ms 
http://localhost:9200/rdc/_search?q=nyrodev nirousset 
11ms 
12 ms en MySQL juste sur le nom de l'entreprise
QUERY DSL 
Possibilité de faire des recherches précises 
curl -XPOST http://localhost:9200/rdc/entreprise/_search -d ' 
{ 
"query": { 
"bool": { 
"must": [{ 
"query_string": { "query": "développeur" } 
}], 
"must_not": [{ 
"query_string": { "query": "chameau" } 
}], 
"should": [{ 
"query_string": { "query": "web" } 
}] 
} 
} 
}'
QUERY OU FILTER 
On peut affiné une recherche avec des query ou des filters. 
On retrouve beaucoup de query et filter qui font la même chose. 
Comment faire la différence ? 
Filter : Mis en cache mais n'influence par le score 
Certains Query peuvent contenir des filter 
Donc : Utiliser des filter le plus possible
QUELQUES AUTRES TYPES DE RECHERCHES 
Range : Un intervalle de chiffres ou date 
Prefix : Mot commençant par 
Geodistance : A moins de X km d'un point GPS 
Regexp : Expression régulière 
Match All : Pour récupérer toutes les données
LES FACETTES 
OU AGGREGATION DEPUIS 1.1 
Avec une recherche, on peut demander des compteurs sur les 
données 
Compteurs sur les terms 
Intervalles sur des chiffres ou dates 
Intervalles sur des distances GPS
AGGRÉGATION SUR LES MOTS 
curl -XPOST http://localhost:9200/rdc/entreprise/_search -d ' 
{ 
"query": { /* ... */ }, 
"aggs": { 
"words": { 
"terms": { "field": "activite_principale" } 
} 
} 
}' 
Résultats 
{ 
"took": 150, 
"hits": { /* ... */ } 
"aggregations": { 
"words": { 
"buckets": [ 
{ "key": "de", "doc_count": 169 }, 
{ "key": "coiffure", "doc_count": 166 }, 
{ "key": "restaurant", "doc_count": 158 }, 
/* ... */ 
] 
} 
} 
}
AGGRÉGATION SUR LES MOTS AVEC QUERY 
curl -XPOST http://localhost:9200/rdc/entreprise/_search -d ' 
{ 
"query": { "term": { "activite_principale": "restaurant" } }, 
"aggs": { 
"words": { 
"terms": { "field": "activite_secondaire" } 
} 
} 
}' 
Résultats 
{ 
"took": 68, 
"hits": { /* ... */ } 
"aggregations": { 
"words": { 
"buckets": [ 
{ "key": "bar", "doc_count": 41 }, 
{ "key": "pizzeria", "doc_count": 18 }, 
{ "key": "traiteur", "doc_count": 11 }, 
/* ... */ 
] 
} 
} 
}
AGGRÉGATION SUR LES DATES 
curl -XPOST http://localhost:9200/rdc/entreprise/_search -d ' 
{ 
"aggs": { 
"dates": { 
"date_histogram": { "field": "updated", "interval": "day", 
"format": "yyyy-MM-dd" } 
} 
} 
}' 
Résultats 
{ 
"took": 66, 
"hits": { /* ... */ } 
"aggregations": { 
"dates": { 
"buckets": [ 
{ "key_as_string": "2014-10-01", "doc_count": 123}, 
{ "key_as_string": "2014-10-02", "doc_count": 8}, 
{ "key_as_string": "2014-10-03", "doc_count": 23}, 
/* ... */ 
] 
} 
} 
}
ET D'AUTRES... 
Aggrégation d'aggrégations 
Geo distance 
Filter (pour des aggrégations encore plus spécifiques) 
Intervalle pour nombres ou date
POUR ALLER PLUS LOIN 
Mappings pour indiquer les types de données 
Analyzers et Tokenizers 
Suggesters pour autocompletion avancée et rapide 
Script pour custom score et autres... (ressemble à du 
JavaScript) 
Percolators : enregister les requêtes pour ensuite récupérer 
les requêtes qui matchent un document
AVANT LA MISE EN PROD 
Protéger l'accès à ElasticSearch (port 9200) 
ou n'écouter qu'en local avec la configuration 
network.host: 127.0.0.1 
Laisser 1 porte via nginx: 
server { 
listen 9292; 
server_name domain.tld; 
auth_basic "RESTRICTED ACCESS"; 
auth_basic_user_file /var/my/access/.htpasswd; 
location / { 
proxy_pass http://localhost:9200; 
proxy_redirect off; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
proxy_set_header Host $http_host; 
} 
}
INSTALLER 2 PLUGINS 
Bigdesk pour monitoring et review de la santé de son serveur 
Head pour avoir une vision global sur son cluster via son 
navigateur et exécuter des requêtes
C'EST UN ELK 
ÉLAN OU WAPITI 
Elasticsearch 
Logstash : Indexer des log dans Elasticsearch et les analyser 
Kibana : Visualitaion des données ElasticSearch en dashboard 
et graphiques
QUESTIONS ? 
MERCI.
APRÈS LE DIGITAL APÉRO 
Doc : 
elasticsearch.org/guide/ 
JDBC River pour indexation SQL 
Indexer des fichiers (depuis 1.4) : 
Attachement Mapping 
More Like this : ou 
Query API 
Infos sur la résilience

Contenu connexe

Tendances

Normandy JUG - Elasticsearch
Normandy JUG - ElasticsearchNormandy JUG - Elasticsearch
Normandy JUG - ElasticsearchDavid Pilato
 
Tunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouriTunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouriAymen ZAAFOURI
 
Tirer le meilleur de ses données avec ElasticSearch
Tirer le meilleur de ses données avec ElasticSearchTirer le meilleur de ses données avec ElasticSearch
Tirer le meilleur de ses données avec ElasticSearchSéven Le Mesle
 
ElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementMohamed hedi Abidi
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?Sébastien Prunier
 
Moteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic SearchMoteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic SearchAudrey Neveu
 
Finist JUG - Elasticsearch
Finist JUG - ElasticsearchFinist JUG - Elasticsearch
Finist JUG - ElasticsearchDavid Pilato
 
Poitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchPoitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchDavid Pilato
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réellesGeoffroy Arnoud
 
Paris data geek - Elasticsearch
Paris data geek - ElasticsearchParis data geek - Elasticsearch
Paris data geek - ElasticsearchDavid Pilato
 
Lausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchLausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchDavid Pilato
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudriaDavid Pilato
 
Solr and Elasticsearch in Action (at Breizhcamp)
Solr and Elasticsearch in Action (at Breizhcamp)Solr and Elasticsearch in Action (at Breizhcamp)
Solr and Elasticsearch in Action (at Breizhcamp)Lucian Precup
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab ElasticsearchDavid Pilato
 
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchBesoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchfrancelabs
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasPierre-Alban DEWITTE
 
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...MongoDB
 
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQLWebinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQLMongoDB
 

Tendances (20)

Normandy JUG - Elasticsearch
Normandy JUG - ElasticsearchNormandy JUG - Elasticsearch
Normandy JUG - Elasticsearch
 
Tunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouriTunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouri
 
Tirer le meilleur de ses données avec ElasticSearch
Tirer le meilleur de ses données avec ElasticSearchTirer le meilleur de ses données avec ElasticSearch
Tirer le meilleur de ses données avec ElasticSearch
 
ElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementElasticSearch : Architecture et Développement
ElasticSearch : Architecture et Développement
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
 
Moteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic SearchMoteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic Search
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Finist JUG - Elasticsearch
Finist JUG - ElasticsearchFinist JUG - Elasticsearch
Finist JUG - Elasticsearch
 
Poitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchPoitou charentes JUG - Elasticsearch
Poitou charentes JUG - Elasticsearch
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réelles
 
Paris data geek - Elasticsearch
Paris data geek - ElasticsearchParis data geek - Elasticsearch
Paris data geek - Elasticsearch
 
Lausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchLausanne JUG - Elasticsearch
Lausanne JUG - Elasticsearch
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudria
 
Solr and Elasticsearch in Action (at Breizhcamp)
Solr and Elasticsearch in Action (at Breizhcamp)Solr and Elasticsearch in Action (at Breizhcamp)
Solr and Elasticsearch in Action (at Breizhcamp)
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
 
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchBesoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
 
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQLWebinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
 

En vedette

Drupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + DockerDrupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + DockerRoald Umandal
 
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...Guillaume MOCQUET
 
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...Guillaume MOCQUET
 
Chapitre2 prise en_main_kibana
Chapitre2 prise en_main_kibanaChapitre2 prise en_main_kibana
Chapitre2 prise en_main_kibanaFabien SABATIER
 
Chapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesChapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesFabien SABATIER
 
Point de vue beijaflore politique sécurité
Point de vue beijaflore  politique sécuritéPoint de vue beijaflore  politique sécurité
Point de vue beijaflore politique sécuritéMaxime de Jabrun
 
Sécurité des Systèmes d'Information et de l'Information
Sécurité des Systèmes d'Information et de l'InformationSécurité des Systèmes d'Information et de l'Information
Sécurité des Systèmes d'Information et de l'InformationShema Labidi
 
Logs serveurs : du terme barbare à la simplicité de la réalité
Logs serveurs :  du terme barbare à la simplicité de la réalitéLogs serveurs :  du terme barbare à la simplicité de la réalité
Logs serveurs : du terme barbare à la simplicité de la réalitéKarles Nine
 
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch ALTER WAY
 
La Banque Nationale de Données Maladies Rares
La Banque Nationale de Données Maladies RaresLa Banque Nationale de Données Maladies Rares
La Banque Nationale de Données Maladies Raresbndmr
 
LORD : un outil d'aide au codage des maladies - JFIM - 13 juin 2014
LORD : un outil d'aide au codage des maladies - JFIM - 13 juin 2014LORD : un outil d'aide au codage des maladies - JFIM - 13 juin 2014
LORD : un outil d'aide au codage des maladies - JFIM - 13 juin 2014bndmr
 
Présentation générale Banque Nationale de Données Maladies Rares, janvier 2014
Présentation générale Banque Nationale de Données Maladies Rares, janvier 2014Présentation générale Banque Nationale de Données Maladies Rares, janvier 2014
Présentation générale Banque Nationale de Données Maladies Rares, janvier 2014bndmr
 
Run MongoDB with Confidence Using MongoDB Management Service (MMS)
Run MongoDB with Confidence Using MongoDB Management Service (MMS)Run MongoDB with Confidence Using MongoDB Management Service (MMS)
Run MongoDB with Confidence Using MongoDB Management Service (MMS)MongoDB
 
Apéro RubyBdx - MongoDB - 8-11-2011
Apéro RubyBdx - MongoDB - 8-11-2011Apéro RubyBdx - MongoDB - 8-11-2011
Apéro RubyBdx - MongoDB - 8-11-2011pierrerenaudin
 
MongoDB IoT City Tour EINDHOVEN: Analysing the Internet of Things: Davy Nys, ...
MongoDB IoT City Tour EINDHOVEN: Analysing the Internet of Things: Davy Nys, ...MongoDB IoT City Tour EINDHOVEN: Analysing the Internet of Things: Davy Nys, ...
MongoDB IoT City Tour EINDHOVEN: Analysing the Internet of Things: Davy Nys, ...MongoDB
 
sshGate - RMLL 2011
sshGate - RMLL 2011sshGate - RMLL 2011
sshGate - RMLL 2011Tauop
 

En vedette (20)

Drupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + DockerDrupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + Docker
 
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
 
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...
 
Séminaire Log Management
Séminaire Log ManagementSéminaire Log Management
Séminaire Log Management
 
Chapitre2 prise en_main_kibana
Chapitre2 prise en_main_kibanaChapitre2 prise en_main_kibana
Chapitre2 prise en_main_kibana
 
Chapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesChapitre3 elk concepts_avances
Chapitre3 elk concepts_avances
 
IPTV
IPTVIPTV
IPTV
 
Point de vue beijaflore politique sécurité
Point de vue beijaflore  politique sécuritéPoint de vue beijaflore  politique sécurité
Point de vue beijaflore politique sécurité
 
Sécurité des Systèmes d'Information et de l'Information
Sécurité des Systèmes d'Information et de l'InformationSécurité des Systèmes d'Information et de l'Information
Sécurité des Systèmes d'Information et de l'Information
 
Logs serveurs : du terme barbare à la simplicité de la réalité
Logs serveurs :  du terme barbare à la simplicité de la réalitéLogs serveurs :  du terme barbare à la simplicité de la réalité
Logs serveurs : du terme barbare à la simplicité de la réalité
 
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
 
La Banque Nationale de Données Maladies Rares
La Banque Nationale de Données Maladies RaresLa Banque Nationale de Données Maladies Rares
La Banque Nationale de Données Maladies Rares
 
sshGate
sshGatesshGate
sshGate
 
LORD : un outil d'aide au codage des maladies - JFIM - 13 juin 2014
LORD : un outil d'aide au codage des maladies - JFIM - 13 juin 2014LORD : un outil d'aide au codage des maladies - JFIM - 13 juin 2014
LORD : un outil d'aide au codage des maladies - JFIM - 13 juin 2014
 
Présentation générale Banque Nationale de Données Maladies Rares, janvier 2014
Présentation générale Banque Nationale de Données Maladies Rares, janvier 2014Présentation générale Banque Nationale de Données Maladies Rares, janvier 2014
Présentation générale Banque Nationale de Données Maladies Rares, janvier 2014
 
Run MongoDB with Confidence Using MongoDB Management Service (MMS)
Run MongoDB with Confidence Using MongoDB Management Service (MMS)Run MongoDB with Confidence Using MongoDB Management Service (MMS)
Run MongoDB with Confidence Using MongoDB Management Service (MMS)
 
Apéro RubyBdx - MongoDB - 8-11-2011
Apéro RubyBdx - MongoDB - 8-11-2011Apéro RubyBdx - MongoDB - 8-11-2011
Apéro RubyBdx - MongoDB - 8-11-2011
 
MongoDB IoT City Tour EINDHOVEN: Analysing the Internet of Things: Davy Nys, ...
MongoDB IoT City Tour EINDHOVEN: Analysing the Internet of Things: Davy Nys, ...MongoDB IoT City Tour EINDHOVEN: Analysing the Internet of Things: Davy Nys, ...
MongoDB IoT City Tour EINDHOVEN: Analysing the Internet of Things: Davy Nys, ...
 
sshGate - RMLL 2011
sshGate - RMLL 2011sshGate - RMLL 2011
sshGate - RMLL 2011
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 

Similaire à Présentation de ElasticSearch / Digital apéro du 12/11/2014

SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLHervé Leclerc
 
Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012David Pilato
 
Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - ElasticsearchDavid Pilato
 
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésDigital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésNeo4j
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Bruno Bonnin
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open doorLeTesteur
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introOlivier Mallassi
 
Construisez votre première application MongoDB
Construisez votre première application MongoDBConstruisez votre première application MongoDB
Construisez votre première application MongoDBMongoDB
 
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...Jean-Pierre Riehl
 
Nantes JUG - Elasticsearch
Nantes JUG - ElasticsearchNantes JUG - Elasticsearch
Nantes JUG - ElasticsearchDavid Pilato
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01MongoDB
 
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataJournées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataDavid Joubert
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQLBruno Bonnin
 
Diaporama du sfPot Lillois du 20 mars 2014
Diaporama du sfPot Lillois du 20 mars 2014Diaporama du sfPot Lillois du 20 mars 2014
Diaporama du sfPot Lillois du 20 mars 2014Les-Tilleuls.coop
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudTugdual Grall
 
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...Nathalie Richomme
 

Similaire à Présentation de ElasticSearch / Digital apéro du 12/11/2014 (20)

Adopte une BDD
Adopte une BDDAdopte une BDD
Adopte une BDD
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
 
Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012
 
Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - Elasticsearch
 
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésDigital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic Search
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open door
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Construisez votre première application MongoDB
Construisez votre première application MongoDBConstruisez votre première application MongoDB
Construisez votre première application MongoDB
 
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...
 
Nantes JUG - Elasticsearch
Nantes JUG - ElasticsearchNantes JUG - Elasticsearch
Nantes JUG - Elasticsearch
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
 
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataJournées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
 
Elastic serach
Elastic serachElastic serach
Elastic serach
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
Diaporama du sfPot Lillois du 20 mars 2014
Diaporama du sfPot Lillois du 20 mars 2014Diaporama du sfPot Lillois du 20 mars 2014
Diaporama du sfPot Lillois du 20 mars 2014
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le Cloud
 
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
 

Plus de Silicon Comté

Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...Silicon Comté
 
Digital Apéro - Le SEO en 2020
Digital Apéro - Le SEO en 2020Digital Apéro - Le SEO en 2020
Digital Apéro - Le SEO en 2020Silicon Comté
 
Retour d'expérience : gérer des flux vidéos multiples de manière optimisée
Retour d'expérience :  gérer des flux vidéos multiples de manière optimiséeRetour d'expérience :  gérer des flux vidéos multiples de manière optimisée
Retour d'expérience : gérer des flux vidéos multiples de manière optimiséeSilicon Comté
 
Web perf Silicon Comte
Web perf Silicon ComteWeb perf Silicon Comte
Web perf Silicon ComteSilicon Comté
 
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...Silicon Comté
 
[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolution[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolutionSilicon Comté
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Silicon Comté
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Silicon Comté
 
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]Silicon Comté
 
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]Silicon Comté
 
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...Silicon Comté
 
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)Silicon Comté
 
Evaluation TIC 2015 (annexes techniques)
Evaluation TIC 2015 (annexes techniques)Evaluation TIC 2015 (annexes techniques)
Evaluation TIC 2015 (annexes techniques)Silicon Comté
 
FEDER - Rapport d'évaluation TIC 2015 (phase 1)
FEDER - Rapport d'évaluation TIC 2015 (phase 1)FEDER - Rapport d'évaluation TIC 2015 (phase 1)
FEDER - Rapport d'évaluation TIC 2015 (phase 1)Silicon Comté
 
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)Silicon Comté
 
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)Silicon Comté
 
Mission d’évaluation et d’expertise du programme Pratic
Mission d’évaluation et d’expertise du programme PraticMission d’évaluation et d’expertise du programme Pratic
Mission d’évaluation et d’expertise du programme PraticSilicon Comté
 
CESR - Avis sur Aménagement du territoire (2012)
CESR - Avis sur Aménagement du territoire (2012)CESR - Avis sur Aménagement du territoire (2012)
CESR - Avis sur Aménagement du territoire (2012)Silicon Comté
 

Plus de Silicon Comté (20)

Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
 
Digital Apéro - Le SEO en 2020
Digital Apéro - Le SEO en 2020Digital Apéro - Le SEO en 2020
Digital Apéro - Le SEO en 2020
 
20200219 dasc
20200219 dasc20200219 dasc
20200219 dasc
 
Retour d'expérience : gérer des flux vidéos multiples de manière optimisée
Retour d'expérience :  gérer des flux vidéos multiples de manière optimiséeRetour d'expérience :  gérer des flux vidéos multiples de manière optimisée
Retour d'expérience : gérer des flux vidéos multiples de manière optimisée
 
Web perf Silicon Comte
Web perf Silicon ComteWeb perf Silicon Comte
Web perf Silicon Comte
 
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
 
[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolution[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolution
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
 
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
 
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
 
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
 
Evaluation TIC 2015 (annexes techniques)
Evaluation TIC 2015 (annexes techniques)Evaluation TIC 2015 (annexes techniques)
Evaluation TIC 2015 (annexes techniques)
 
FEDER - Rapport d'évaluation TIC 2015 (phase 1)
FEDER - Rapport d'évaluation TIC 2015 (phase 1)FEDER - Rapport d'évaluation TIC 2015 (phase 1)
FEDER - Rapport d'évaluation TIC 2015 (phase 1)
 
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
 
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
 
Mission d’évaluation et d’expertise du programme Pratic
Mission d’évaluation et d’expertise du programme PraticMission d’évaluation et d’expertise du programme Pratic
Mission d’évaluation et d’expertise du programme Pratic
 
CESR - Avis sur Aménagement du territoire (2012)
CESR - Avis sur Aménagement du territoire (2012)CESR - Avis sur Aménagement du territoire (2012)
CESR - Avis sur Aménagement du territoire (2012)
 
SDTAN Jura
SDTAN JuraSDTAN Jura
SDTAN Jura
 

Présentation de ElasticSearch / Digital apéro du 12/11/2014

  • 1. ELASTIC SEARCH DIGITAL APÉRO SILICONCOMTÉ par Cédric Nirousset - @Nyr0
  • 2. PRÉSENTATION Développeur web indépendant depuis 2004 PHP Symfony MySQL Intégration / Responsive Elastic Search etc... nyroDev
  • 3. Open source Un indexeur de documents (basé sur Apache Lucene) Une API HTTP/RESTFul/JSON Distribué Simple et puissant à la fois En quasi temps réel Mais ce n'est pas une base de données
  • 4. ROUTE DES COMMUNES Editorial et contenus sur : 4 départements de Franche-Comté 67 communautés de communes de Franche-Comté 103 cantons de Franche-Comté 1 785 communes de Franche-Comté 5 000 entreprises de Franche-Comté 2 524 activités soit un total d'environ 9 500 lignes, stockées en MySQL
  • 5. RECHERCHE MYSQL : "NYRODEV" UNIQUEMENT SUR LE TITRE SELECT * FROM entreprise WHERE name LIKE "%nyrodev%" 12ms
  • 6. RECHERCHE MYSQL : "NYRODEV" SUR LES CHAMPS TEXTES SELECT * FROM entreprise WHERE name LIKE "%nyrodev%" OR responsable LIKE "%nyrodev%" OR description LIKE "%nyrodev%" OR activite_principale LIKE "%nyrodev%" OR activite_secondaire LIKE "%nyrodev%" 13ms
  • 7. RECHERCHE MYSQL : "NYRODEV NIROUSSET" UNIQUEMENT SUR LE TITRE SELECT * FROM entreprise WHERE name LIKE "%nyrodev%" AND name LIKE "%nirousset%" 13ms 0 résultat
  • 8. RECHERCHE MYSQL : "NYRODEV NIROUSSET" SUR LES CHAMPS TEXTES SELECT * FROM entreprise WHERE (name LIKE "%nyrodev%" OR responsable LIKE "%nyrodev%" OR description LIKE "%nyrodev%" OR activite_principale LIKE "%nyrodev%" OR activite_secondaire LIKE "%nyrodev%") AND (name LIKE "%nirousset%" OR responsable LIKE "%nirousset%" OR description LIKE "%nirousset%" OR activite_principale LIKE "%nirousset%" OR activite_secondaire LIKE "%nirousset%") 14ms
  • 9. ET ON POURRAIT AJOUTER : D'autres champs textes existants Recherche sur la commune (jointure) Recherche sur les publicités (jointure) ET ON NE CHERCHE QUE SUR LES ENTREPRISES !
  • 10. QUELQUES TERMES Document : Un object JSON représentant les données Penser NoSQL (donc jointures incluses et "applaties") Type : Regroupe des documents du même type Index Espace logique de stockage des documents dont les types sont fonctionnellement communs
  • 11. API DE BASE D'ELASTIC SEARCH API REST : http://host:port/[index]/[type]/[_action/_id] Documents : curl -XPUT http://localhost:9200/rdc/entreprise/1 curl -XGET http://localhost:9200/rdc/entreprise/1 curl -XDELETE http://localhost:9200/rdc/entreprise/1 Recherche : curl -XPOST http://localhost:9200/rdc/entreprise/_search curl -XPOST http://localhost:9200/rdc/_search curl -XPOST http://localhost:9200/_search
  • 12. INDEXER UN DOCUMENT curl -XPUT http://localhost:9200/rdc/entreprise/1 -d ' { "name": "nyroDev", "responsable": "Cédric Nirousset", "description": "Développeur web", "activite_principale": "Développement web", "activite_secondaire": "Hébergement web, conseils", "commune": { "name": "Besançon", "code_postal": "25000" } }' Réponse : { "ok": true, "_index": "rdc", "_type": "entreprise", "_id": "1" }
  • 13. GAGNER DU TEMPS DE DÉVELOPPEMENT De nombreuses librairies dans beaucoup de langages existes pour faire des requêtes en objet Elastica en PHP Des libraires permettent d'ajouter/modifier/supprimer les données avec les modifs en Base de données Avec Symfony, FOSElasticaBundle
  • 14. RIVERS C'est Elastic Search qui va lire et indexer les données. CouchDb MongoDb JDBC (pour MySQL par exemple) RabbitMQ Twitter Wikipedia FileSystem IMAP/POP3 Email RSS Git ou GitHub Et plein d'autres
  • 15. CHERCHER curl -XPOST http://localhost:9200/rdc/entreprise/_search?q=nyrodev Résultat : { "took": 1, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 1, "max_score": 0.61319745, "hits": [{ "_index": "rdc", "_type": "entreprise", "_id": "1", "_score": 0.61319745, "_source": { "name": "nyroDev", /* ... */ } }] } }
  • 16. LES RÉSULTATS 10 résultats sont retournés par défaut paramétrable avec from et size Le tri se fait par défaut sur le _score paramétrable avec _sort
  • 17. ET SI ON COMPARAIT AVEC MYSQL ? Recherche global sur tout l'index rdc (entreprise, publicité, communes, etc...) http://localhost:9200/rdc/_search?q=nyrodev 8ms http://localhost:9200/rdc/_search?q=nyrodev nirousset 11ms 12 ms en MySQL juste sur le nom de l'entreprise
  • 18. QUERY DSL Possibilité de faire des recherches précises curl -XPOST http://localhost:9200/rdc/entreprise/_search -d ' { "query": { "bool": { "must": [{ "query_string": { "query": "développeur" } }], "must_not": [{ "query_string": { "query": "chameau" } }], "should": [{ "query_string": { "query": "web" } }] } } }'
  • 19. QUERY OU FILTER On peut affiné une recherche avec des query ou des filters. On retrouve beaucoup de query et filter qui font la même chose. Comment faire la différence ? Filter : Mis en cache mais n'influence par le score Certains Query peuvent contenir des filter Donc : Utiliser des filter le plus possible
  • 20. QUELQUES AUTRES TYPES DE RECHERCHES Range : Un intervalle de chiffres ou date Prefix : Mot commençant par Geodistance : A moins de X km d'un point GPS Regexp : Expression régulière Match All : Pour récupérer toutes les données
  • 21. LES FACETTES OU AGGREGATION DEPUIS 1.1 Avec une recherche, on peut demander des compteurs sur les données Compteurs sur les terms Intervalles sur des chiffres ou dates Intervalles sur des distances GPS
  • 22. AGGRÉGATION SUR LES MOTS curl -XPOST http://localhost:9200/rdc/entreprise/_search -d ' { "query": { /* ... */ }, "aggs": { "words": { "terms": { "field": "activite_principale" } } } }' Résultats { "took": 150, "hits": { /* ... */ } "aggregations": { "words": { "buckets": [ { "key": "de", "doc_count": 169 }, { "key": "coiffure", "doc_count": 166 }, { "key": "restaurant", "doc_count": 158 }, /* ... */ ] } } }
  • 23. AGGRÉGATION SUR LES MOTS AVEC QUERY curl -XPOST http://localhost:9200/rdc/entreprise/_search -d ' { "query": { "term": { "activite_principale": "restaurant" } }, "aggs": { "words": { "terms": { "field": "activite_secondaire" } } } }' Résultats { "took": 68, "hits": { /* ... */ } "aggregations": { "words": { "buckets": [ { "key": "bar", "doc_count": 41 }, { "key": "pizzeria", "doc_count": 18 }, { "key": "traiteur", "doc_count": 11 }, /* ... */ ] } } }
  • 24. AGGRÉGATION SUR LES DATES curl -XPOST http://localhost:9200/rdc/entreprise/_search -d ' { "aggs": { "dates": { "date_histogram": { "field": "updated", "interval": "day", "format": "yyyy-MM-dd" } } } }' Résultats { "took": 66, "hits": { /* ... */ } "aggregations": { "dates": { "buckets": [ { "key_as_string": "2014-10-01", "doc_count": 123}, { "key_as_string": "2014-10-02", "doc_count": 8}, { "key_as_string": "2014-10-03", "doc_count": 23}, /* ... */ ] } } }
  • 25. ET D'AUTRES... Aggrégation d'aggrégations Geo distance Filter (pour des aggrégations encore plus spécifiques) Intervalle pour nombres ou date
  • 26. POUR ALLER PLUS LOIN Mappings pour indiquer les types de données Analyzers et Tokenizers Suggesters pour autocompletion avancée et rapide Script pour custom score et autres... (ressemble à du JavaScript) Percolators : enregister les requêtes pour ensuite récupérer les requêtes qui matchent un document
  • 27. AVANT LA MISE EN PROD Protéger l'accès à ElasticSearch (port 9200) ou n'écouter qu'en local avec la configuration network.host: 127.0.0.1 Laisser 1 porte via nginx: server { listen 9292; server_name domain.tld; auth_basic "RESTRICTED ACCESS"; auth_basic_user_file /var/my/access/.htpasswd; location / { proxy_pass http://localhost:9200; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } }
  • 28. INSTALLER 2 PLUGINS Bigdesk pour monitoring et review de la santé de son serveur Head pour avoir une vision global sur son cluster via son navigateur et exécuter des requêtes
  • 29.
  • 30. C'EST UN ELK ÉLAN OU WAPITI Elasticsearch Logstash : Indexer des log dans Elasticsearch et les analyser Kibana : Visualitaion des données ElasticSearch en dashboard et graphiques
  • 32. APRÈS LE DIGITAL APÉRO Doc : elasticsearch.org/guide/ JDBC River pour indexation SQL Indexer des fichiers (depuis 1.4) : Attachement Mapping More Like this : ou Query API Infos sur la résilience