Pour de nombreuses applications et sites web, qui ne servent évidemment pas uniquement à représenter votre entreprise, la fonction de recherche est l’un des outils les plus importants. La recherche peut être un outil principal d’interaction avec le client, car elle renseigne sur ce que vos utilisateurs recherchent sur votre site ou application. En analysant les recherches des utilisateurs, vous pouvez améliorer l’utilisabilité, proposer des fonctionnalités plus pertinentes pour attirer de nouveaux utilisateurs et fidéliser ceux qui existent déjà. Quant aux utilisateurs, ils apprécient la recherche pour au moins deux raisons :
- Ils n’ont pas besoin de faire beaucoup d’efforts pour trouver quelque chose. Par exemple, si votre site web est très volumineux et qu’un utilisateur doit cliquer de nombreuses fois pour accéder au contenu souhaité, cela pourrait rapidement le décourager de l’utiliser.
- C’est une bouée de sauvetage pour les utilisateurs qui ne parviennent pas à comprendre l’interface utilisateur de votre solution et qui se retrouvent bloqués dans la navigation. Dans la plupart des cas, cela se produit également lorsque vous avez une solution complexe avec beaucoup de contenu, d’onglets, de navigation, etc.
La fonctionnalité de recherche peut être représentée par un petit champ de saisie sur la page, mais cette petite chose peut améliorer l’utilisabilité de votre site, augmenter le nombre de clients et aider votre entreprise, ce qui est après tout l’objectif principal. C’est pourquoi l’efficacité est l’une des caractéristiques clés de la recherche. Peu importe à quel point votre recherche est utile et puissante, si l’utilisateur attend trop longtemps ou si le niveau de pertinence est trop bas, cela produira une mauvaise impression.
Évidemment, il est difficile de trouver une solution universelle. Avec une large gamme de fonctionnalités, des prix différents et bien d’autres éléments à comparer, chaque service est un bon choix en fonction de vos besoins. Dans la première partie de l’article, nous nous efforçons de passer en revue et de comparer deux services de recherche très populaires en tant que service : Microsoft (MS) Azure Search et Elasticsearch (ES). Dans la seconde partie, nous analysons Azure Search en pratique.
Présentation de Microsoft Azure Search

Azure Search est une solution cloud robuste de recherche en tant que service développée par Microsoft Corporation. Sa sortie a eu lieu en 2013 lorsque Microsoft a annoncé de nouvelles fonctionnalités pour Azure, y compris le nouveau service Azure Search. L’une des puissantes capacités d’Azure Search est l’utilisation de l’intelligence artificielle pour extraire du texte et des caractéristiques d’images, ou des entités et des phrases clés à partir de texte brut. La fonctionnalité est exposée via des appels API courants ou le SDK .NET (qui facilite également le travail avec la recherche et masque la complexité de la récupération d’informations).
Azure Search offre de nombreuses fonctionnalités, notamment des suggestions de recherche, une navigation à facettes, des filtres, la mise en surbrillance des résultats pertinents, le tri, la pagination, etc. Voici un bref aperçu de celles-ci :
- Recherche plein texte et analyse de texte, le cas d’utilisation de base. La syntaxe des requêtes fournit un ensemble d’opérateurs, tels que les opérateurs logiques, de recherche de phrases, de suffixe et de priorité, et comprend également les recherches floues et de proximité, le boost de termes et les expressions régulières.
- Recherche cognitive, cette fonctionnalité est en mode aperçu (veuillez noter que ces informations sont valides au moment de la rédaction de l’article). Elle a été conçue pour permettre l’analyse d’images et de textes, qui peut être appliquée à un pipeline d’indexation pour extraire des informations textuelles à partir de contenu brut à l’aide d’algorithmes alimentés par l’IA.
- Intégration de données, Azure Search permet d’utiliser des indexeurs pour parcourir automatiquement Azure SQL Database, Azure Cosmos DB ou Azure Blob Storage pour le contenu consultable. Les indexeurs Azure Blob peuvent effectuer une recherche de texte dans les documents (y compris les documents Microsoft Office, PDF et HTML).
- Analyse linguistique, vous pouvez utiliser des analyseurs lexicaux et linguistiques personnalisés de Lucene ou Microsoft pour des requêtes de recherche complexes utilisant la correspondance phonétique et les expressions régulières, ou pour la gestion (comme le genre, les pluriels irréguliers, la segmentation des mots, etc.).
- Geo-recherche, une fonctionnalité pour rechercher des informations par emplacement géographique ou classer les résultats de recherche en fonction de leur proximité avec un emplacement physique, ce qui peut être bénéfique pour les utilisateurs finaux.
- Fonctionnalités d’expérience utilisateur, incluant tout ce qui facilite l’interaction de l’utilisateur avec la fonctionnalité de recherche : auto-complétion (aperçu), suggestions de recherche, association de termes équivalents par synonymes, navigation à facettes (qui peut être utilisée comme code derrière une liste de catégories ou pour un filtrage autodirigé), mise en surbrillance des correspondances, tri, pagination et limitation des résultats.
- Pertinence, dont le principal avantage est l’utilisation de profils de scoring pour modéliser la pertinence des valeurs dans les documents. Par exemple, vous pouvez l’utiliser si vous souhaitez afficher les offres d’emploi populaires plus haut dans les résultats de recherche.
Azure Search fournit également des outils utiles tels que l’analyse du trafic de recherche, l’enregistrement des métriques sur les requêtes par seconde, par latence et le throttling. Via le portail Azure, vous pouvez également facilement surveiller vos analyses, les nombres d’index et de documents, gérer la capacité, et bien plus encore. La plateforme hautement disponible garantit une expérience de service de recherche extrêmement fiable, offrant un SLA de 99,9 %.
Présentation d’Elasticsearch

Elasticsearch est utilisé pour de nombreux cas d’utilisation différents, qui seront brièvement passés en revue plus loin dans ce paragraphe. Il a été fondé en 2012 par Shay Banon, et l’idée principale était de créer une solution de recherche évolutive qui a ensuite remplacé Compass, un précurseur d’Elasticsearch. Alors, examinons un peu ce qu’est Elasticsearch.
Elasticsearch est une base de données orientée document conçue pour stocker, récupérer et gérer des données orientées document ou semi-structurées. Il peut être utilisé pour rechercher toutes sortes de documents et fournit une recherche évolutive et prend en charge le multi-tenant. Elasticsearch donne accès à toutes les fonctionnalités via une interface REST, ainsi, vous stockez des données dans des documents JSON, puis vous les interrogez pour les récupérer. Elasticsearch est également sans schéma, utilisant quelques valeurs par défaut pour indexer les données. Les principales caractéristiques d’Elasticsearch sont :
- Recherche textuelle, c’est le cas d’utilisation le plus courant, et Elasticsearch est principalement utilisé là où il y a beaucoup de texte, et l’objectif est de trouver n’importe quelle donnée correspondant le mieux à une phrase spécifique.
- Recherche de texte et données structurées vous permet de rechercher des produits par propriétés et nom.
- Agrégation de données, comme mentionné dans la documentation officielle, le framework d’agrégation aide à fournir des données agrégées basées sur une requête de recherche. Il est basé sur de simples blocs de construction appelés agrégations, qui peuvent être composés pour construire des résumés complexes des données. Il existe de nombreux types d’agrégations différents, chacun avec son propre objectif et sa propre sortie.
- Stockage de documents JSON représente un objet JSON avec des données, qui est l’unité d’information de base dans Elasticsearch qui peut être indexée.
- Geo-recherche offre la possibilité de combiner la géolocalisation et la recherche. Une telle fonctionnalité devient lentement un incontournable pour tout site web de contenu.
- Auto-suggestion est également l’une des fonctions les plus populaires de nos jours, qui permet à l’utilisateur de recevoir des requêtes suggérées au fur et à mesure qu’il tape.
- Complétion automatique, c’est l’une des fonctions très utiles de nos jours, qui complète le champ de recherche avec des mots partiellement tapés, en se basant sur les recherches précédentes.
Elasticsearch n’est pas nouveau et possède de nombreuses fonctions communes avec Azure Search (ce qui est assez logique car ils fournissent tous deux des services de recherche), mais il évolue rapidement et travaille sur un nombre croissant de fonctions. L’objectif principal de ces deux services est clair et cohérent et vise à permettre d’obtenir des performances plus rapides avec les résultats de recherche pour votre moteur de recherche. Essayons de les comparer selon certaines fonctionnalités.
Azure Search vs Elasticsearch
Le processus de sélection est un processus véritablement individuel qui dépend de nombreux facteurs, principalement de vos objectifs et de votre projet. Plus loin dans l’article, nous allons comparer Azure Search et Elasticsearch de manière générale, ce qui couvrira les fonctionnalités principales et les propriétés communes. Quoi qu’il en soit, vous devez simplement garder à l’esprit que lors de la comparaison, vous ne devez pas seulement explorer leur liste de fonctionnalités et leurs prix, mais comprendre que la solution choisie doit correspondre à vos normes et aux besoins de votre projet. Il peut également être judicieux de réfléchir un peu à vos plans futurs. Par exemple, au début du travail sur votre application ou service, vous voulez avoir une version purement anglaise du site, mais vous savez avec certitude qu’ultérieurement, vous prévoyez une intégration multilingue, vous devez donc vous assurer que la plateforme sélectionnée répondra toujours à vos besoins. Parfois, il est difficile de choisir l’option la plus coûteuse dès le départ, lorsque votre projet est encore petit, mais cela vous évitera à l’avenir une migration vers une autre plateforme.
Langues prises en charge
Les applications multilingues ne sont pas rares et ont parfois des exigences spécifiques quant aux langues prises en charge (par exemple, la prise en charge d’une langue spécifique est requise). Le tableau ci-dessous présente la liste des langues prises en charge pour les deux services. Veuillez noter que cette liste est valide au moment de la rédaction de l’article et a été obtenue sur les sites officiels.
| Langue | ![]() |
![]() |
|---|---|---|
| Arabe | ![]() |
![]() |
| Arménien | ![]() |
![]() |
| Bangla | ![]() |
![]() |
| Basque | ![]() |
![]() |
| Bengali | ![]() |
![]() |
| Brésilien | ![]() |
![]() |
| Bulgare | ![]() |
![]() |
| Catalan | ![]() |
![]() |
| Chinois | ![]() |
![]() |
| Croate | ![]() |
![]() |
| Tchèque | ![]() |
![]() |
| Danois | ![]() |
![]() |
| Néerlandais | ![]() |
![]() |
| Anglais | ![]() |
![]() |
| Estonien | ![]() |
![]() |
| Finnois | ![]() |
![]() |
| Français | ![]() |
![]() |
| Galicien | ![]() |
![]() |
| Allemand | ![]() |
![]() |
| Grec | ![]() |
![]() |
| Gujarati | ![]() |
![]() |
| Hébreu | ![]() |
![]() |
| Hindi | ![]() |
![]() |
| Hongrois | ![]() |
![]() |
| Islandais | ![]() |
![]() |
| Indonésien | ![]() |
![]() |
| Irlandais | ![]() |
![]() |
| Italien | ![]() |
![]() |
| Japonais | ![]() |
![]() |
| Kannada | ![]() |
![]() |
| Coréen | ![]() |
![]() |
| Letton | ![]() |
![]() |
| Lituanien | ![]() |
![]() |
| Malayalam | ![]() |
![]() |
| Malais (Latin) | ![]() |
![]() |
| Marathi | ![]() |
![]() |
| Norvégien | ![]() |
![]() |
| Persan | ![]() |
![]() |
| Polonais | ![]() |
![]() |
| Portugais | ![]() |
![]() |
| Pendjabi | ![]() |
![]() |
| Roumain | ![]() |
![]() |
| Russe | ![]() |
![]() |
| Serbe | ![]() |
![]() |
| Slovaque | ![]() |
![]() |
| Slovène | ![]() |
![]() |
| Sorani | ![]() |
![]() |
| Espagnol | ![]() |
![]() |
| Suédois | ![]() |
![]() |
| Tamoul | ![]() |
![]() |
| Télougou | ![]() |
![]() |
| Thaï | ![]() |
![]() |
| Turc | ![]() |
![]() |
| Ukrainien | ![]() |
![]() |
| Ourdou | ![]() |
![]() |
| Vietnamien | ![]() |
![]() |
Prix
Le prix est toujours une chose assez difficile à comparer. Ces deux services ont des types de paiement et des plans différents. Dans le tableau ci-dessous, nous avons essayé de montrer la comparaison en tenant compte des questions les plus populaires sur le paiement, comme les types de paiement (mensuel, annuel, etc.), les périodes d’essai, etc.
![]() |
![]() |
|
|---|---|---|
| Niveau gratuit | ![]() |
![]() |
| Paiement mensuel | ![]() |
![]() |
| Paiement unique | ![]() |
![]() |
| Abonnement annuel | ![]() |
![]() |
| Prix de départ (par heure) | 0,101 $ | Dépend de la configuration sélectionnée |
| Période d’essai | Pas nécessaire en raison de la disponibilité du niveau gratuit | 14 jours |
Si vous examinez attentivement le tableau, vous remarquerez que certains points n’ont pas de réponses claires. Par exemple, Elasticsearch ne fournit pas le prix exact pour chaque configuration, car il vous permet de configurer l’infrastructure : taille du déploiement, choix du fournisseur cloud (AWS ou GCP), nombre de zones de disponibilité et type de déploiement, qui ont un impact important sur le prix. Azure Search n’a pas de période d’essai mais dispose d’un niveau gratuit qui n’est pas limité dans le temps d’utilisation. C’est pourquoi, lors de la comparaison des prix, vous devez réfléchir à ce qui conviendrait le mieux à votre solution et à vos plans initiaux (utiliser le plan gratuit ou la période d’essai, tout configurer vous-même ou utiliser les plans configurés, etc.).
Types de données pris en charge
Les types de données pris en charge peuvent également être un problème délicat lorsque vous recherchez les opportunités de chaque service. Ci-dessous, dans le tableau, nous présentons les types pris en charge par Azure Search et Elasticsearch avec quelques notes supplémentaires. Veuillez noter que certains types de données peuvent être remplacés par d’autres, alors examinez attentivement le tableau.
![]() |
![]() |
|
|---|---|---|
| string | ![]() |
![]() |
| Collection (String) | Une liste de chaînes de caractères qui peuvent être optionnellement tokenisées pour la recherche plein texte. La limite recommandée est de 16 Mo. |
Elasticsearch dispose de types de données distincts pour le stockage de tableaux. |
| boolean | ![]() |
![]() |
| integer | Valeurs entières de 32 bits (Int32) et de 64 bits (Int64) |
![]() |
| long | ![]() |
![]() |
| short | ![]() |
![]() |
| byte | ![]() |
![]() |
| binary | ![]() |
![]() |
| double | ![]() |
![]() |
| float | ![]() |
![]() |
| half_float | ![]() |
![]() |
| scaled_float | ![]() |
![]() |
| date | Valeurs date/heure représentées au format OData V4. |
![]() |
| GeographyPoint | ![]() |
![]() |
| geo_shape pour des formes complexes comme des polygones | Azure Search possède en réalité le type GeographyPolygon, qui est un polygone représentant une région géographique sur le globe. Ce type ne peut pas être utilisé dans les champs de documents mais peut être utilisé comme argument. |
![]() |
| Types de données de plage | ![]() |
integer_range, float_range, long_range, double_range, date_range |
| Type de données complexe | ![]() |
array, object, nested |
| Type IP | ![]() |
![]() |
| Completion | Azure Search a une fonction séparée |
completion pour fournir |
| datatype | pour cela |
des suggestions d’auto-complétion |
| Type Token count | ![]() |
pour compter le nombre de tokens dans une chaîne de caractères |
| mapper-murmur3 | ![]() |
pour calculer des hachages de valeurs au moment de l’indexation et les stocker dans l’index |
| mapper-annotated-text | ![]() |
pour indexer du texte contenant des balises spéciales (typiquement utilisé pour identifier des entités nommées) |
| Type Percolator | ![]() |
accepte les requêtes du query-dsl |
| join datatype | ![]() |
définit une relation parent/enfant pour les documents au sein du même index |
| Alias datatype | ![]() |
définit un alias vers un champ existant. |
Interfaces de programmation
Les interfaces de programmation prises en charge peuvent être l’une des principales dépendances. Dans ce paragraphe, nous ne comparerons pas ces services dans un tableau, mais nous fournirons une liste des interfaces disponibles pour chacun d’eux. Les interfaces de programmation suivantes sont disponibles pour Azure Search :
- REST – Commandes HTTP prises en charge par n’importe quelle plateforme et langue de programmation, ce qui rend cette interface universelle.
- SDK .NET – Wrapper .NET pour l’API REST disponible pour les langages à code managé ciblant le .NET Framework.
- Bibliothèques Azure Search pour Python, fournies via le SDK Azure pour Python.
Elasticsearch a une liste plus large de clients pris en charge, ainsi qu’une liste de clients contribués par la communauté, mais dans cet article, nous passerons en revue uniquement les clients officiels, qui sont listés ci-dessous :
- Client REST Java.
- API Java.
- API JavaScript.
- API Groovy.
- API .NET.
- API PHP.
- API Perl.
- API Python.
- API Ruby.
Malgré un support plus large, Azure Search fournit une API REST, ce qui la rend également disponible pour une liste plus large de langues.
Source de données d’importation
Les deux services permettent d’importer des données à partir de différentes sources. C’est parfois très utile, surtout lorsque vous avez un projet existant et que vous devez déplacer vos données vers l’index. Azure Search prend en charge la liste suivante de sources de données :
- Source de données existante. Vous pouvez sélectionner des indexeurs existants définis dans votre service de recherche.
- Azure SQL Database.
- SQL Server sur Azure VM.
- Azure Cosmos DB.
- Azure Blob Storage.
- Azure Table Storage.
Grâce à l’importateur Java Database Connection (JDBC), vous pouvez récupérer des données de sources JDBC pour les indexer dans Elasticsearch. Il prend en charge les sources suivantes :
- PostgreSQL.
- MS SQL Server.
- MySQL.
- Exportation à partir de fichiers CSV.
De plus, les deux services permettent de pousser n’importe quel ensemble de données composé de documents JSON dans l’index.
Résumé
Dans cet article, nous avons comparé quelques paramètres assez courants pour afficher une différence entre les services. Malgré tous les articles et comparaisons, vous devez vous rappeler que vous ne devez pas vous limiter à ce que les experts disent lorsque vous choisissez une solution qui, selon vous, fonctionnera le mieux pour votre équipe. C’est un processus individuel et parfois le bon choix varie, en fonction des préférences spécifiques, des processus de travail et de vos besoins commerciaux. C’est pourquoi nous espérons que vous avez trouvé quelque chose de pertinent pour vos besoins et que vous êtes plus proche de prendre une décision éclairée ou, du moins, que vous avez découvert quelque chose de nouveau pour vous. Pour ceux qui, après avoir lu cet article, sont intéressés par Azure Search, il pourrait être intéressant de voir la deuxième partie de l’article, où nous fournirons quelques exemples de son utilisation.
À propos de Redwerk
L’équipe Redwerk est sur le marché depuis 2005. Au fil des ans, notre équipe de développement dédiée a réalisé plus de 250 projets pour des clients du monde entier. Nous avons un portefeuille crédible d’études de cas sur les services d’externalisation que nous avons fournis, ce qui démontre notre expertise dans diverses technologies et industries. De plus, la plupart des clients collaborent avec nous sur le long terme en raison de la haute qualité des services d’externalisation informatique que nous fournissons. Notre équipe est toujours au fait des tendances et garantit le meilleur résultat pour chaque projet que nous traitons.



