Le WordPress d'aujourd'hui, décodé pour les développeurs

Headless & API

Meilisearch, Typesense ou Elasticsearch pour une recherche headless

Faut-il choisir Meilisearch, Typesense ou Elasticsearch pour indexer un catalogue de négoce B2B branché sur une API REST WordPress ? Comparatif concret entre trois moteurs open source.

Par WordPress Développement • 5 juin 2022 • 4 min de lecture • Aucun commentaire
Meilisearch, Typesense ou Elasticsearch pour une recherche headless

Faut-il choisir Meilisearch, Typesense ou Elasticsearch pour indexer un catalogue de négoce B2B alimenté par une API REST WordPress ? La question s’est posée concrètement pour ce projet, avec plusieurs milliers de références produits, des filtres par catégorie technique et une recherche textuelle qui devait tolérer les fautes de frappe des clients professionnels.

Les trois moteurs partagent un point commun essentiel pour ce cas : aucun n’exige de licence commerciale pour être utilisé en production, contrairement à certaines solutions propriétaires. Leurs différences se situent ailleurs, dans la facilité d’exploitation et dans le type de requêtes qu’ils encaissent le mieux.

Meilisearch : la mise en route la plus rapide

Meilisearch a été le premier testé, avec pour objectif de mesurer le temps nécessaire entre l’installation et une première recherche fonctionnelle. L’indexation depuis les données exposées par l’API REST WordPress s’est faite via un simple appel HTTP, sans configuration de mapping préalable :

$ curl -X POST 'http://localhost:7700/indexes/produits/documents' \
  -H 'Content-Type: application/json' \
  --data-binary @produits.json

La tolérance aux fautes de frappe fonctionne dès l’indexation par défaut, sans configuration additionnelle, ce qui a permis de couvrir le besoin de recherche textuelle tolérante en quelques heures de travail seulement.

Typesense : des facettes très rapides

Typesense a montré son intérêt principal sur les filtres à facettes, très nombreux dans ce catalogue B2B (matière, diamètre, norme, fournisseur). Les temps de réponse mesurés sur des filtres combinés restaient inférieurs à ceux de Meilisearch sur ce projet précis, au prix d’une définition de schéma plus explicite à écrire en amont :

{
  "name": "produits",
  "fields": [
    { "name": "nom", "type": "string" },
    { "name": "matiere", "type": "string", "facet": true },
    { "name": "diametre", "type": "float", "facet": true }
  ]
}
L'essentiel à retenir : Meilisearch privilégie la simplicité de mise en route ; Typesense mise sur des filtres à facettes très rapides ; Elasticsearch reste le plus puissant mais le plus lourd à administrer

Elasticsearch : la puissance, au prix de la complexité

Elasticsearch reste le moteur le plus riche des trois en matière d’agrégations et de requêtes complexes, mais aussi le plus exigeant à administrer correctement : gestion de cluster, dimensionnement de la mémoire, mapping explicite de chaque champ avant indexation. Pour ce projet de taille moyenne, cette complexité n’a pas trouvé de justification suffisante.

Tableau comparatif sur les critères de ce projet

CritèreMeilisearchTypesenseElasticsearch
Temps de mise en routeQuelques heuresUne journéePlusieurs jours
Facettes combinéesCorrectTrès rapidePuissant mais complexe
Effort d’administrationFaibleFaible à modéréÉlevé

Synchroniser l’index depuis WordPress

Quel que soit le moteur retenu, la synchronisation depuis WordPress a suivi le même principe : un hook sur la publication ou la mise à jour d’un produit déclenche un appel vers l’API du moteur de recherche choisi, en réutilisant les données déjà exposées par la route REST du catalogue plutôt que de dupliquer la logique de sérialisation.

  • Un hook sur la publication déclenche l’indexation d’un document unique
  • Une commande WP-CLI dédiée permet de réindexer l’intégralité du catalogue à la demande
  • Un identifiant commun entre WordPress et l’index évite toute ambiguïté lors des mises à jour

Le moteur de recherche le plus puissant n’est jamais le meilleur choix par défaut ; c’est celui dont la complexité d’exploitation reste proportionnée au volume réel de données à indexer.

Un point commun aux trois solutions à ne pas négliger

Quel que soit le moteur choisi, aucun des trois ne remplace la base de données WordPress : ils constituent chacun un index secondaire, à reconstruire intégralement en cas de perte, sans jamais devenir la source de vérité du catalogue. Cette distinction, évidente sur le papier, a pourtant nécessité une documentation explicite auprès de l’équipe projet, pour éviter qu’une modification faite directement dans l’index ne soit un jour prise à tort pour une modification pérenne du catalogue.

Notre verdict

Pour ce catalogue de négoce B2B, Typesense a été retenu, en raison de la rapidité de ses filtres à facettes combinés, essentiels dans ce contexte où les clients professionnels affinent leur recherche par plusieurs critères techniques simultanément. Meilisearch aurait constitué un choix tout aussi défendable pour un catalogue avec moins de facettes et davantage de recherche textuelle libre. Ce comparatif ne couvre pas les solutions propriétaires du marché, hors périmètre volontairement fixé pour ce projet.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi