Elasticsearch - Concepts de base

Elasticsearch est un serveur de recherche basé sur Apache Lucene. Il a été développé par Shay Banon et publié en 2010. Il est maintenant maintenu par Elasticsearch BV. Sa dernière version est la 7.0.0.

Elasticsearch est un moteur de recherche et d'analyse en texte intégral distribué et open source en temps réel. Il est accessible à partir de l'interface de service Web RESTful et utilise des documents JSON (JavaScript Object Notation) sans schéma pour stocker les données. Il est construit sur le langage de programmation Java et par conséquent Elasticsearch peut fonctionner sur différentes plates-formes. Il permet aux utilisateurs d'explorer de très grandes quantités de données à très haute vitesse.

Caractéristiques générales

Les caractéristiques générales d'Elasticsearch sont les suivantes -

  • Elasticsearch est évolutif jusqu'à pétaoctets de données structurées et non structurées.

  • Elasticsearch peut être utilisé en remplacement des magasins de documents tels que MongoDB et RavenDB.

  • Elasticsearch utilise la dénormalisation pour améliorer les performances de recherche.

  • Elasticsearch est l'un des moteurs de recherche d'entreprise les plus populaires et est actuellement utilisé par de nombreuses grandes organisations telles que Wikipedia, The Guardian, StackOverflow, GitHub, etc.

  • Elasticsearch est une open source et disponible sous la licence Apache version 2.0.

Concepts clés

Les concepts clés d'Elasticsearch sont les suivants -

Nœud

Il fait référence à une seule instance en cours d'exécution d'Elasticsearch. Un seul serveur physique et virtuel accueille plusieurs nœuds en fonction des capacités de leurs ressources physiques telles que la RAM, le stockage et la puissance de traitement.

Grappe

C'est une collection d'un ou plusieurs nœuds. Cluster fournit des capacités d'indexation et de recherche collectives sur tous les nœuds pour des données entières.

Indice

C'est une collection de différents types de documents et de leurs propriétés. Index utilise également le concept de fragments pour améliorer les performances. Par exemple, un ensemble de documents contient des données d'une application de réseau social.

Document

C'est une collection de champs d'une manière spécifique définie au format JSON. Chaque document appartient à un type et réside dans un index. Chaque document est associé à un identifiant unique appelé UID.

Tesson

Les index sont subdivisés horizontalement en fragments. Cela signifie que chaque partition contient toutes les propriétés du document mais contient moins d'objets JSON que l'index. La séparation horizontale fait du shard un nœud indépendant, qui peut être stocké dans n'importe quel nœud. La partition principale est la partie horizontale d'origine d'un index, puis ces partitions principales sont répliquées en fragments de réplique.

Répliques

Elasticsearch permet à un utilisateur de créer des répliques de leurs index et fragments. La réplication permet non seulement d'augmenter la disponibilité des données en cas d'échec, mais améliore également les performances de recherche en effectuant une opération de recherche parallèle dans ces répliques.

Avantages

  • Elasticsearch est développé sur Java, ce qui le rend compatible sur presque toutes les plates-formes.

  • Elasticsearch est en temps réel, c'est-à-dire qu'au bout d'une seconde, le document ajouté est consultable dans ce moteur

  • Elasticsearch est distribué, ce qui facilite sa mise à l'échelle et son intégration dans toute grande organisation.

  • La création de sauvegardes complètes est facile en utilisant le concept de passerelle, présent dans Elasticsearch.

  • La gestion de l'hébergement multiclient est très simple dans Elasticsearch par rapport à Apache Solr.

  • Elasticsearch utilise des objets JSON comme réponses, ce qui permet d'appeler le serveur Elasticsearch avec un grand nombre de langages de programmation différents.

  • Elasticsearch prend en charge presque tous les types de documents, sauf ceux qui ne prennent pas en charge le rendu de texte.

Désavantages

  • Elasticsearch n'a pas de support multilingue en termes de gestion des données de demande et de réponse (uniquement possible en JSON) contrairement à Apache Solr, où cela est possible aux formats CSV, XML et JSON.

  • Parfois, Elasticsearch a un problème de situations de fractionnement du cerveau.

Comparaison entre Elasticsearch et RDBMS

Dans Elasticsearch, l'index est similaire aux tables du SGBDR (Relation Database Management System). Chaque table est une collection de lignes, tout comme chaque index est une collection de documents dans Elasticsearch.

Le tableau suivant donne une comparaison directe entre ces termes -

Elasticsearch SGBDR
Grappe Base de données
Tesson Tesson
Indice Table
Champ Colonne
Document Rangée