Share Button

Lire la version française

Elasticsearch allows you to make advanced searches. Some users may want to extract their search results to Excel (or LibreOffice Calc…) to work on the data.

As we explained in our post Export data to a csv file with Symfony, the goal of a (successful) export is to limit the effect on the server.

With Elasticsearch, we can use the scan and scroll functions to iterate.

Continue reading

Share Button

Share Button

Read the English version

Elasticsearch vous permet de réaliser des recherches avancées.
Certains utilisateurs souhaiteront extraire le résultat de leurs recherches sous excel (ou LibreOffice Calc…) pour retraiter les données.

Comme nous l’avons expliqué lors de notre article Exporter des données dans un fichier csv, le but d’un export (réussi) est de limiter l’impact sur le serveur.

Dans Elasticsearch, nous pouvons utiliser les fonctions scan et scroll pour réaliser nos itérations.

Continue reading

Share Button

Share Button

Lire la version française

This article talks about the implementation of a search with Elasticsearch on a Symfony project.

Install Elasticsearch

Continue reading

Share Button

Share Button

Lire la version française

This article is the second one about Elasticsearch.
Its goal is not to present what is Elasticsearch, you can read more about it on other blogs, like this one (in French). But it will allow you to get to the heart of the matter, and to understand the following articles.

Continue reading

Share Button

Share Button

Lire la version française

We have worked recently on search engines in different domains :

  • 2 multi-criterias front office search engines moteurs de recherche multi-critères front-office (for frontend users)
  • 2 multi-criterias back office search engines (for administrators)
  • on statistical engine (computing, agregations, sums, means, …)

Build these engines on a database would have been too costly (in development time but also for performance reasons) for approximate results (for both statistic and full-text search).

For these reasons, we have decided to use Elasticsearch : a search engine based on Lucene. Here is the result of our adventures : 11 articles (including this one):
Continue reading

Share Button

Share Button

Read the English version

Quand et pourquoi hydrater son objet avec les Transformers?

Quand on utilise Elasticsearch et les Finders du FOSElasticaBundle, les réponses reçues d’Elasticsearch sont automatiquement transformées en objets Doctrine. 

Dans certains cas, vous aurez besoin d’afficher une information issue d’une jointure : la photo, la traduction d’une catégorie, …
Malheureusement, l’hydratation est faite uniquement sur les objets en question : FOSElasticaBundle transforme les ids correspondant à la recherche en objets via un select * in (:ids).
Conséquence : pour chaque entrée dans votre liste de résultats, Doctrine ira chercher la Category associée. Pour 100 enregistrements dans 100 catégories différentes, 100 requêtes simples seront ajoutées. On se rend compte de ce qui peut arriver avec un modèle de données compliqué et plusieurs jointures.

Heureusement, pour éviter cela, vous pouvez surcharger le Transformer.
Continue reading

Share Button

Share Button

Read the English version

Cet article présente comment configurer et rechercher avec Elasticsearch sur un projet Symfony :

Continue reading

Share Button

Share Button

Read the English version

Cet article est le deuxième d’une série consacrée à Elasticsearch.
Il n’a pas pour but de présenter ce qu’est Elasticsearch, vous pourrez en lire plus par exemple sur ce blog : http://blog.zenika.com/index.php?post/2012/11/14/Premiers-pas-avec-ElasticSearch-Partie-1. Mais il vous permettra de mettre les mains dans le moteur, et de comprendre les articles qui suivront.
Continue reading

Share Button

Share Button

Read the English version

Au cours de récents projets, nous avons été amenés à travailler sur des moteurs de recherche dans des domaines complètement différents :

  • 2 moteurs de recherche multi-critères front-office (orientés utilisateurs)
  • 2 moteurs de recherche multi-critère back-office (orientés administrateurs)
  • un moteur de statistiques (calculs, aggrégations, sommes, moyennes, …)

Réaliser ces moteurs sur une base de données se serait révélé coûteux (en temps de développement mais aussi au niveau des performances) pour des résultats mitigés (aussi bien au niveau statistiques, qu’au niveau recherche “texte”).

Pour cela, nous nous sommes tournés vers Elasticsearch : moteur de recherche basé sur Lucene. Voici le résultat de nos péripéties : 11 articles.
Continue reading

Share Button

Share Button

Read the English version

Comme REST doit être sans état (stateless) :

chaque requête d’un client vers un serveur doit contenir toute l’information nécessaire pour permettre au serveur de comprendre la requête, sans avoir à dépendre d’un contexte conservé sur le serveur. Cela libère de nombreuses interactions entre le client et le serveur.

Article Wikipedia sur REST

Nous avions besoin d’ajouter un nouvel authentication provider dans Symfony2 pour respecter cette contrainte. Nous avons choisi WSSE.

Cet article explique comment configurer WSSE sur Symfony, comment l’utiliser avec FOSRestBundle et tester le tout avec Google Chrome.
Continue reading

Share Button