Qu’est-ce que Elasticsearch ?

Elasticsearch est un moteur de recherche construit sur apache lucene. Il est open source et développé en Java. Il s’agit d’un moteur de recherche distribué et analytique en temps réel qui permet d’effectuer différents types de recherches. Il est capable d’obtenir des réponses de recherche rapides car, au lieu de chercher directement dans le texte, il cherche plutôt dans un index. En outre, il prend en charge la recherche plein texte qui est entièrement basée sur des documents au lieu de tableaux ou de schémas. Retrouvez plus d’informations ici.

Pourquoi Elasticsearch ?

  • Il est possible d’effectuer et de combiner différents types de recherche, quel que soit le type de données, qu’il s’agisse de données structurées, non structurées, géographiques ou métriques.
  • La recherche peut être effectuée sous n’importe quelle forme de données.
  • Possibilité d’analyser des milliards d’enregistrements en quelques secondes.
  • Il fournit également des agrégations qui permettent d’explorer les tendances et les modèles de données.

Avantages d’Elastichsearch

1. Évolutivité

Elasticsearch est construit à l’échelle. Elle fonctionne parfaitement sur n’importe quelle machine ou dans un groupe contenant des centaines de nœuds, et l’expérience est presque identique. Passer d’un petit groupe à un grand groupe est presque entièrement automatique et indolore. Passer d’une grande grappe à une très grande grappe nécessite un peu plus de planification et de conception, mais c’est encore relativement indolore. L’évolutivité est prise en compte dans les dimensions ci-dessous.

  • Taille de l’index : Pouvoir gérer des index énormes (de l’ordre de centaines de gigaoctets ou pétaoctets)
  • Débit : Pouvoir gérer un nombre variable de recherches simultanées dans un certain délai de réponse.
  • Taille du cluster : Le nombre de nœuds dans le système

2. Rapidité d’exécution

En utilisant des indices inversés distribués, Elasticsearch trouve rapidement les meilleures correspondances pour vos recherches en texte intégral, même à partir de très grands ensembles de données.

3. Multilingue

Le plugin ICU est utilisé pour indexer et symboliser le contenu multilingue. Il s’agit d’un plugin de recherche élastique basé sur l’implémentation lucide de la norme de segmentation de texte unicode. Basé sur des plages de caractères, il décide de la rupture sur un espace ou un caractère. Par conséquent, les contenus multilingues sont pris en charge dans Elasticsearch.

4. Orienté document (JSON)

Elasticsearch utilise la notation d’objet JavaScript, ou JSON, comme format de sérialisation des documents. La sérialisation JSON est supportée par divers langages de programmation et est devenue le format standard utilisé par le mouvement NoSQL. Il est simple, concis et facile à lire.

5. Auto-complétion et recherche d’instance

L’outil de suggestion d’achèvement offre une fonctionnalité d’auto-remplissage et de recherche au fur et à mesure. Il s’agit d’une fonction de navigation qui guide les utilisateurs vers les résultats pertinents au fur et à mesure qu’ils tapent, ce qui améliore la précision de la recherche. Il n’est pas destiné à la correction orthographique ni à la fonctionnalité « did-you-mean » comme le suggèreur de termes ou d’expressions.

6. Sans schéma

Elasticsearch ne nécessite pas certaines définitions telles que l’index, le type et le type de champ avant le processus d’indexation, et lorsqu’un objet est indexé ultérieurement avec une nouvelle propriété, il sera automatiquement ajouté aux définitions de la cartographie.

Concepts de base

  • Near Real Time : Elasticsearch est une plateforme de recherche en temps quasi réel qui effectue des recherches aussi rapidement que vous indexez un document.
  • Cluster : Un cluster est une collection d’un ou plusieurs nœuds qui, ensemble, contiennent la totalité des données. Il offre des capacités d’indexation et de recherche fédérées dans tous les nœuds et est identifié par un nom unique (par défaut, il s’agit de « elasticsearch »).
  • Nœud : Un nœud est un serveur unique qui fait partie d’un cluster, stocke des données et participe aux capacités d’indexation et de recherche du cluster.
  • Index : Un index est une collection de documents ayant des caractéristiques similaires et est identifié par un nom. Ce nom est utilisé pour faire référence à l’index lors des opérations d’indexation, de recherche, de mise à jour et de suppression des documents qu’il contient.
  • Type : Un type est un type logique d’un index dont la sémantique est complète. Il est défini pour les documents qui ont un ensemble de champs communs. Vous pouvez définir plus d’un type dans votre index.
  • Document : Un document est une unité d’information de base qui peut être indexée. Il est démontré dans le JSON qui est un format d’échange de données sur Internet au niveau mondial.
  • Tessons : Elasticsearch permet de subdiviser l’index en plusieurs parties appelées tessons. Chaque tesson est en soi un « index » entièrement fonctionnel et indépendant qui peut être hébergé sur n’importe quel nœud du cluster
  • Répliques : Elasticsearch vous permet de faire une ou plusieurs copies des tessons de votre index qui sont appelés tessons répliques ou répliques.

Installation

  • Installez la dernière version de Java ou vérifiez votre version actuelle en utilisant la commande « java -version » dans l’invite de la ligne de commande (la version de Java doit être 7 ou plus)
  • Définir une variable d’environnement pour JAVA
  • Téléchargez le fichier zip élastique à partir de « https://www.elastic.co/downloads/elasticsearch ».
  • Dézippez le fichier
  • Allez au dossier bin
  • Double-cliquez sur le fichier « elasticsearch.bat ».
  • Ouvrez un navigateur, tapez « localhost:9200 » et il vous montrera le nom, le nom du groupe de recherche élastique et d’autres informations au format JSON.

Exemple

1. Ajouter un document

Les documents dans Elasticsearch sont représentés au format JSON. De plus, les documents sont ajoutés aux index et les documents ont un type. Ici, « information_technology », « person » et « 1 » sont respectivement index, type et id. Comme l’index n’existe pas encore, Elasticsearch le créera automatiquement.

POST localhost:9200/information_technology/person/1

{

« nom » : « Paul »,

« nom de famille » : « Smith »,

« job_description » : « Analyste commercial »

}

2. Obtenir un document

Maintenant que le document existe, nous pouvons le récupérer en utilisant l’API ci-dessous.

GET localhost:9200/information_technology/person/1

3. Document de mise à jour

Nous pouvons le mettre à jour en utilisant l’API ci-dessous.

POST localhost:9200/information_technology/person/1/_update

{

« doc »:{

« job_description » : « Analyste de données »

}

}

4. Supprimer le document

Nous pouvons la supprimer en utilisant l’API ci-dessous.

SUPPRIMER localhost:9200/information_technology/person/1

5. Recherchez

Nous pouvons effectuer une recherche en utilisant soit « /_search?q=something », soit en spécifiant la catégorie à rechercher.

GET localhost:9200/_search?q=Paul

OU

GET localhost:9200/_search?q=job_description:java