Bonjour à tous,

Je suis de faire connaissance avec ElasticSearch pour améliorer une base de données dans mon entreprise.

Je dois donc refaire une appli web toute simple sans framework (ce n'est pas la peine ou alors avec Slim). Mais cette appli est en relation avec une base de données MySQL. Celle-ci compte actuellement 25 tables. La plus importante comporte près 1,7 millions de lignes.

Voici ma question : Est-il possible de mapper ma base de données MySQL avec ElasticSearch ? Ou alors faut-il récupérer les informations via PDO par exemple et peupler ensuite Elastic.

J'avoue qu'il y a la une subtilité que je n'arrive pas à saisir.

Bonne journée

10 réponses


Salut,

En fait si je comprends bien tu veux utiliser ElasticSearch afin de requêter ta BDD MySQL c'est ça ?
C'est le formattage d'URL qui t'intéresse ? Parce que ce n'est ni plus ni moins que du REST (http://www.grafikart.fr/tutoriels/php/rest-503/).

Bonjour.
As-tu visionné le tutoriel ElasticSearch qui se trouve sur le site ?
Tu verras que ElasticSearch ne remplace pas intégralement les requêtes SQL.

Salut à vous deux et excusez moi de ne pas avoir répondu avant, je n'ai pas eu le temps de passer sur le site.

En fait, je dois garder la base de donnée telle qu'elle est (si ce n'est pas possible de faire autrement). ElasticSearch doit simplement servir à faire des recherches sur certains champs de certaines tables de la base. Celle-ci contient aujourd'hui 2 millions et des brouettes de lignes.

J'ai compris qu ElasticSearch n'est pas la même chose que les SGBD type MySQL, SQLServer ou Mongo. Mais je sais qu'ils peuvent cohabiter.

Ce que je ne comprends pas c'est comment mapper ma base de donnée MYSQL avec elasticSearch pour que je puisse ensuite faire des recherches. En fait, il faut que ES se mette à jour dès qu'un enregistrement est fait dans MySQL et puisse renvoyer certains résultats.

Voilà en gros ce qu'il faudrait. Ce que je ne comprends pas c'est comment faire ce mapping.

Bonne fin de journée

J'ai vraiment l'impression que tu n'as pas visionné le tutoriel dont je t'ai parlé, sinon tu ne demanderais pas comment faire la relation entre E.S. et un SGBD.

SI je l'ai vu mais je n'ai pas vu comment à partir d'une page PHP classique on faisait la liaison ES et Mysql. Je vais encore regarder mais...

Même s'il en parle vaguement dans la vidéo (normal, vu que le tutoriel à un but de découverte de ES et non un tutoriel détaillé), tu en as également une réponse succincte dans la description du tutoriel :

Comment l'intégrer dans mon application

...
Ensuite, lorsque l'on souhaitera effectuer une recherche on demandera à Elastic Search les résultats, et à partir des IDs on récupèrera les données sur notre base de donnée pricnipale.
Il existe d'ailleurs des librairies pour différents de languages pour communiquer plus simplement avec votre serveur ElasticSearch. Il est d'ailleurs possible avec les frameworks modernes d'effectuer la synchronisation de manière quasi automatique.

  • Ruby on Rails dispose de la gem elasticsearch-rails
  • CakePHP a un DataSource Elastic Search
  • Symfony dispose du FOSElasticSearchBundle

oui effectivement, mais pour ce projet je ne vais (dois) pas utiliser de framework. J'ai vu pour symfony mais il y a la simplicité de symfony la dedans.

Tu as par exemple ceci pour du PHP sans Framework : Elastica » A PHP client for elasticsearch.
Lis correctement la documentation qu'il y a sur le site, ainsi que les exemples et l'API, avant de venir poser des questions dessus, si possible.

Je te remercie. Mais tu sais si mes questions de compréhension d'ennuis, tu peux très bien ne pas répondre et passer outre. Je ne vois absolument pas pourquoi tu utilises ce ton condescendant. Je suis vraiment désolé de ne pas tout connaitre d'ES.
Il me semblait qu'un forum était là pour informer, expliquer, diriger celui qui pose les questions. Même si elles ne sont pas toujours "intelligente". Tu ne poses jamais de questions stupides et tu comprends toujours tout dès les premières minutes ?
Je ne demande pas que quelqu'un fasse le boulot à ma place et me transmette son script, je peux le faire moi-même. Mais j'ai juste un problème de comprehension concernant l'articulation de ces technos.

Je suis, encore une fois, vraiment désolé d'avoir usé de ton temps avec mes questions d'arriéré.

Bonne soirée à toi

Si la dernière phrase de mon message précédent t'a vexé, j'en suis navré, mais si tu regardes le tout dernier commentaire (qui se situe en premier, donc en haut) sur la page du tutoriel, tu aurais pu voir que son auteur avait donné un lien correspondant à celui que je t'ai donné précédemment, c'est pour cela que je t'ai conseillé de lire la documentation du site, avant de venir poser des questions pour des réponses que tu y aurait trouvé toi-même (ce qui tu en conviendras j'espère, n'est pas un problème de difficulté de compréhension).
Je n'ai a aucun moment dit que tu étais idiot où je ne sais quoi, mais plutôt un manque d'attention dans ce cas là, si je te paraît hautain où sévère dans mon ton utilisé, j'en suis désolé, mais c'est peut-être dû au fait que la discussion est à l'écrit, que je n'utilise pas de smiley ou tout autre fantaisie manuscrite et que je suis habitué à rédiger de la manière la plus neutre qui soit.
De plus, je n'ai fait à aucun moment allusion du fait que tu demanderais à être assisté au niveau script/code ou autre, je te demande donc de ne pas interpréter mes paroles, merci.