Qu'est-ce qu'Elasticsearch ?

Elasticsearch est un moteur de recherche et d'analyse distribué et en open source pour tout type de données, y compris les données textuelles, numériques, géospatiales, structurées et non structurées. Elasticsearch a été conçu à partir d'Apache Lucene et a été lancé en 2010 par Elasticsearch N. V. (maintenant appelé Elastic). Réputé pour ses API REST simples, sa nature distribuée, sa vitesse et sa scalabilité, Elasticsearch est le composant principal de la Suite Elastic, un ensemble d'outils en open source d'ingestion de données, d'enrichissement, de stockage, d'analyse et de visualisation. Couramment appelée la Suite ELK (pour Elasticsearch, Logstash et Kibana), la Suite Elastic comprend désormais une riche collection d'agents de transfert légers, appelés les agents Beats, pour envoyer des données à Elasticsearch.

À quoi sert Elasticsearch ?

La vitesse et la scalabilité d'Elasticsearch, ainsi que sa capacité à indexer de nombreux types de contenus signifient qu'il peut être employé dans différents cas d'utilisation :

  • Recherche applicative
  • Recherche de site web
  • Entreprise Search
  • Logging et analytique de log
  • Indicateurs d'infrastructure et monitoring de conteneur
  • Monitoring des performances applicatives
  • Analyse et visualisation de données géospatiales
  • Security Analytics
  • Analyse des données métier

Comment fonctionne Elasticsearch ?

Des données brutes transitent dans Elasticsearch depuis une multitude de sources, y compris des logs, des indicateurs de système et des applications web. L'ingestion des données est le processus qui analyse, normalise et enrichit ces données brutes avant leur indexation dans Elasticsearch. Une fois les données indexées dans Elasticsearch, les utilisateurs peuvent lancer des requêtes complexes à partir de leurs données et utiliser des agrégations pour récupérer des résumés complexes de leurs données. Avec Kibana, les utilisateurs peuvent créer des visualisations puissantes de leurs données, partager des tableaux de bord et gérer la Suite Elastic.

Qu'est-ce qu'un index Elasticsearch ?

Un index Elasticsearch est une collecte de documents en lien les uns avec les autres. Elasticsearch stocke des données sous forme de documents JSON. Chaque document met en corrélation un ensemble de clés (les noms des champs ou des propriétés) avec leurs valeurs correspondantes (chaînes, nombres, booléens, dates, choix de valeurs, géolocalisations ou autres types de données).

Elasticsearch utilise une structure de données appelée index inversé et conçue pour faire des recherches full-text très rapides. Un index inversé liste chaque mot unique qui apparaît dans n'importe quel document et identifie tous les documents dans lesquels chaque mot apparaît.

Au cours du processus d'indexation, Elasticsearch stocke des documents et fabrique un index inversé pour permettre de rechercher les données du document en temps quasi réel. L'indexation commence par l'index API, avec lequel vous pouvez ajouter ou mettre à jour un document JSON dans un index spécifique.

À quoi sert Logstash ?

Logstash, l'un des produits de base de la Suite Elastic, sert à agréger et à traiter des données pour les envoyer dans Elasticsearch. Logstash est un pipeline côté serveur en open source destiné au traitement des données, qui vous permet d'ingérer simultanément des données provenant de multitude de sources, puis de les transformer avant qu'elles soient indexées dans Elasticsearch.

À quoi sert Kibana ?

Kibana est un outil de visualisation et de gestion de données pour Elasticsearch qui intègre des histogrammes en temps réel, des graphes linéaires, des camemberts et des cartes. Kibana intègre également des applications comme Canvas, qui permet aux utilisateurs de créer des infographies dynamiques personnalisées basées sur leurs données, et sur Elastic Maps pour visualiser des données géospatiales.

Pourquoi utiliser Elasticsearch ?

Elasticsearch est rapide. Comme Elasticsearch est conçu d'après Lucene, il excelle en recherche full-text. Elasticsearch est également une plateforme de recherche en temps quasi réel, ce qui signifie que la latence entre le moment d'indexation du document et la possibilité de le rechercher est très courte (généralement une seconde). Par conséquent, Elasticsearch est adapté aux cas d'utilisation urgents comme les analyses de sécurité ou le monitoring d'infrastructure.

Elasticsearch est naturellement distribué. Les documents stockés dans Elasticsearch sont distribués dans différents conteneurs appelés partitions, qui sont dupliqués pour intégrer des copies doublées des données en cas de défaillance matérielle. La nature distribuée d'Elasticsearch lui permet de scaler des centaines (voire même des milliers) de serveurs et gérer des pétaoctets de données.

Elasticsearch dispose d'une multitude de fonctionnalités. En plus de sa vitesse, de sa scalabilité et de sa résilience, Elasticsearch possède plusieurs fonctionnalités puissantes intégrées qui rendent le stockage et la recherche de données encore plus efficaces, comme le cumul de données et la gestion du cycle de vie des index.

La Suite Elastic simplifie l'ingestion, la visualisation et le rapport de données. L'intégration avec les agents Beats et Logstash facilite le traitement de données avant l'indexation dans Elasticsearch. Et Kibana intègre une visualisation en temps réel des données Elasticsearch et des IU permettant d'accéder rapidement au monitoring des performances applicatives (APM), aux logs et aux données des indicateurs d'infrastructure.

FAQ Elasticsearch

Elasticsearch est-il gratuit ?

Oui, les fonctionnalités en open source d'Elasticsearch sont gratuites avec la licence Apache 2. Des fonctionnalités gratuites supplémentaires sont disponibles avec la licence Elastic, et des abonnements payants donnent accès au support technique ainsi qu'à des fonctionnalités avancées comme l'Alerting et le Machine Learning.

Quelle est la distribution officielle d'Elasticsearch ?

La distribution officielle d'Elasticsearch est disponible sur le site web Elastic.

Qui peut contribuer au projet Elasticsearch ?

Elasticsearch est un projet en open source géré par Elastic. Le code source intègre des contributions de développeurs internes et externes à Elastic.

N'importe qui peut soumettre une pull request dans le repository Elasticsearch sur GitHub. Elastic effectue une révision en toute transparence de toutes les pull requests avant de les fusionner au code source.

Quelles sont les options pour déployer Elasticsearch ?

Elasticsearch peut être déployé en tant que service hébergé et géré à travers Elasticsearch Service, disponible sur Amazon Web Services (AWS), Google Cloud Platform (GCP) et Alibaba Cloud, ou être téléchargé et installé sur votre propre matériel ou dans le cloud. La documentation Elasticsearch donne des instructions pour télécharger, installer et configurer Elasticsearch.

Pour les utilisations souhaitant provisionner, gérer et monitorer leurs déploiements depuis une seule console, mais préfèrent ne pas utiliser une plateforme de cloud public, Elastic propose Elastic Cloud Enterprise (qui peut être déployée sur des clouds privés et publics, des machines virtuelles ou des machines physiques) ainsi qu'un abonnement de niveau privé.

Quels sont les langages de programmation pris en charge par Elasticsearch ?

Elasticsearch prend en charge une multitude de langages et les clients officiels sont disponibles pour :

  • Java
  • JavaScript (Node.js)
  • Go
  • .NET (C#)
  • PHP
  • Perl
  • Python
  • Ruby

Quels sont les langues prises en charge par Elasticsearch ?

Elasticsearch prend en charge 34 langues allant de l'arabe au thaïlandais, et fournit des analyseurs pour chacune d'elles. La liste complète est disponible dans la documentation sur l'analyseur linguistique d'Elasticsearch. Il est possible d'ajouter un support pour des langues supplémentaires avec des plug-ins personnalisés.

Elasticsearch fournit-il des API REST ?

Oui, Elasticsearch fournit un ensemble complet et puissant d'API REST pour effectuer des tâches comme la vérification de la santé du cluster, des opérations CRUD (création, lecture, mise à jour, suppression), rechercher des opérations à partir d'indices et exécuter des opérations de recherche avancées comme le filtrage et les agrégations.