Expat.com est la plateforme de référence de la vie à l’étranger.

Son rôle est multiple : 

  • Aider les futurs expats à préparer leur installation dans leur pays d’accueil ;
  • Aider les expats dans leurs problèmes du quotidien ;
  • Permettre aux membres de se constituer un réseau, tant professionnel que personnel dans leur nouveau lieu de vie ;
  • Apporter du contenu sur leur nouvelle zone de résidence et sur la vie à l’étranger en général (guides de l’expatrié, magazine dédié à l’expatriation) ;
  • Recommander des prestataires de services adaptés aux besoins de ceux qui vivent à l’étranger, lister les logements et emplois disponibles dans une zone géographique donnée, favoriser l’entraide via un forum collaboratif et des petites annonces.

Avec ses presque 2,9 millions de membres, la recherche est d’une importance capitale !

Il est indispensable que les utilisateurs puissent répondre rapidement à leurs questions. 

Dans ce contexte, Expat.com a pris la décision de remplacer son vieux sphinx par Elasticsearch. Ce qui lui permet notamment de passer d’une indexation par jour, à une indexation quasiment en temps réel. 

Expat.com, la plateforme de référence de la vie à l’étranger
Expat.com, la plateforme de référence de la vie à l’étranger

Contexte du projet de recherche

Expat.com est une PME. Pour diminuer au maximum le temps de maintenance, améliorer le time to market et gagner en souplesse d’utilisation, le choix du cloud d’Elastic était assez évident.
En moins d’une heure, l’entreprise pouvait commencer ses tests dans un cluster “High Availability” sans aucune connaissance server.

Le contenu du site est en 5 langues et sur une grande variété de contenus

  • Forum
  • Articles issus d’un magazine généraliste
  • Guides ville et pays
  • Petites annonces générales et immobilières
  • Annonces d’emploi

Le lot 1 a consisté à migrer la recherche du site vers Elasticsearch  : 

  • Refonte des procédures d’indexation 


6 contextes de recherche

  • Suggestions contextuelles
  • Requête générale aveugle dans tous les contenus
  • Recherche filtrée par destination et/ou par langue
  • Recherche dans le Forum
  • Recherche dans les annonces
  • Suggestions de résultats supplémentaires

Maintenant que le contexte est posé, donnons la parole à Christiane Ramiandramanjato, Senior Back-End Web Developer chez Expat.com qui nous donne ses impressions sur le déroulement du projet d’implémentation d’Elasticsearch. 

Spoon Consulting (SC): Que connaissiez-vous d’Elasticsearch avant de démarrer le projet ?  

Expat.com : Je ne connaissais Elasticsearch que de nom et je savais juste globalement à quoi ça servait. C’est avec ce projet que j’ai vraiment découvert toutes ses possibilités.

SC: Combien de temps au total a pris le projet, de son étude à la mise en production du lot 1 ?


Expat.com : Le projet a débuté il y a 8 mois environ, avec une présentation de l’outil faite par Spoon Consulting.
Nous avons pris un peu de temps pour étudier le projet en interne.

Nous avons fait un second atelier pour modéliser nos index en fonction des recommandations fournies par Spoon Consulting.
Les 2 concepts clés à retenir pour la modélisation des indices sont : 

  • Dénormaliser les bases SQL. Cela n’était pas évident pour des développeurs habitués aux bases de données relationnelles ;
  • Normaliser les champs utilisés pour assurer une interopérabilité entre les indices (faire des filtres sur plusieurs indices d’un coup).


Une fois la décision prise, en quelques clics tout était prêt.
Nous avons d’abord déployé un petit cluster de tests sur le cloud d’Elastic. Avant la mise en production, nous avons fait évoluer le cluster pour qu’il soit capable de tenir la charge en High Availability. Quelques minutes plus tard, le cluster a éŧé mis à jour.

SC: Quels conseils donneriez-vous à une entreprise qui débuterait un projet Elasticsearch pour son site web ? 

Suggestion du site expat.com
Suggestion d’expat.com

Expat.com : Avant tout, je dirais de bien analyser la structure des données et surtout l’utilisation que vous souhaitez en faire.
Il faut aussi comprendre l’utilisation des types de champs, c’est très important pour la performance.
Ainsi, essayez d’adapter au maximum les champs au besoin fonctionnel. 

Notez aussi que s’il n’est pas possible de modifier les types de champs d’un indice après l’avoir créé, il est possible d’ajouter des types de champs complémentaires, ou d’ajouter de nouveaux champs sans avoir à indexer. Ça évite de nombreuses réindexations. 

Enfin, pensez à utiliser des index alias. Des réindexations étant toujours nécessaires, utiliser des alias va fortement vous faciliter la tâche.    

SC: Quelles difficultés avez-vous rencontrées ? 

Expat.com : Elasticsearch est facile à prendre en main. Créer le premier indice demande des efforts car il faut considérer toutes les liaisons d’une entité. Mais une fois qu’on a compris le principe, ça devient beaucoup plus simple.

On est vite à l’aise pour faire des petites requêtes. Il faut un peu de logique et de recherche pour trouver la meilleure solution pour chaque cas.

La documentation officielle est très complète et la communauté est vraiment développée. C’est toujours important quand on s’initie à une nouvelle technologie. Vous trouverez donc beaucoup d’exemples pour vous aiguiller.

Cependant, notre requête principale était plus complexe. Le but était de requêter, par langue, sur tous les index du site : 

  • Forum
  • Articles du magazine
  • Articles composant les sections des guides ville et pays
  • Petites annonces générales et immobilières
  • Annonces d’emploi

La difficulté a été de définir une requête qui fonctionne pour tous les cas, sans trop favoriser un module par rapport à l’autre.

Nous avons eu tendance à ajouter un niveau de complexité à chaque fois qu’on voulait corriger un résultat. Mais avec l’aide de Spoon consulting, nous avons réussi à simplifier la requête tout en améliorant les résultats.

Nous continuons à travailler sur cette requête pour améliorer les résultats en fonction des requêtes les plus effectuées par les utilisateurs.

L’autre requête qui nous a posé problème est celle des suggestions.
Le principe est très simple en théorie, mais avec un volume de données important, il est difficile de garder des performances acceptables. Or des suggestions qui prennent plusieurs secondes à s’afficher sont parfaitement inutiles. Appliquer les bonnes pratiques est donc indispensable. Sur les suggestions, la sanction est immédiate.

Contenu similaire avec Elastic search
Contenu similaire


SC : Quelles sont les prochaines étapes dans l’utilisation d’Elasticsearch pour Expat.com ? 

Expat.com : Dans notre lot 1, nous avons migré notre ancien système vers Elasticsearch. La prochaine étape est de profiter des capacités de l’outil pour développer de nouveaux modules et proposer une expérience enrichie à nos utilisateurs.   
Nous reviendrons bientôt présenter notre utilisation d’Elasticsearch dans notre démarche d’innovation.

Spoon consulting is a certified partner of Elastic

As a certified partner of the Elastic company, Spoon Consulting offers a high level consulting for all kinds of companies.

Read more information on your personal use Elasticsearch use case on Spoon consulting’s posts

Or contact Spoon consulting now