Une idée derrière Elastic Stack et Elasticsearch

(10 avril 2020 )

Une brève introduction à Elasticsearch et ELK Stack. Pourquoi quoi et comment.

ELK https : //aasconsultants.files.wordpress.com/2019/03/elk.png

Historique

Élastique NV est une société fondée en 2012 à Amsterdam, Shay Banon était le fondateur dElasticsearch. Sa première itération sappelait Compass. Le second était Elasticsearch (avec Apache Lucene sous le capot). Il a ouvert Elasticsearch, créé le canal IRC #elasticsearch et a attendu que les utilisateurs apparaissent. La réponse a été impressionnante. Les utilisateurs lont adopté naturellement et facilement. Ladoption a explosé, une communauté a commencé à se former et les gens lont remarqué – à savoir Steven Schuurman, Uri Boness et Simon Willnauer. Ensemble, ils ont fondé une société de recherche.

Quest-ce quElastic Stack?

Elastic Stack est également connu sous le nom de pile ELK. Fondamentalement, il contient trois projets open source.

  1. Elastic Search – Moteur de recherche et danalyse .
  2. Logstash – Pipeline de traitement des données.
  3. Kibana – Tableau de bord pour visualiser les données.

Tous ces trois ont leur propre signification et en combinant ces trois vous obtiendra lanalyse et lanalyse de vos données.

Pourquoi est-ce nécessaire?

Selon lenquête, Facebook génère 4 pétaoctets de données chaque jour, cest-à-dire 40 millions de Go . Les données, cest désormais un monde de données. Nous avons donc besoin dun système qui analyse nos données.

Attendez !! Quest-ce que cela signifie? Analyser.

Il y a deux termes à comprendre.

  1. Analyse – Dans la partie analyse, vous obtiendrez des résultats à partir des données passées ou des données existantes dont vous disposez.
  2. Analytics – Lorsque vous souhaitez prédire les besoins des utilisateurs, vous souhaitez une visualisation basée sur des graphiques pour une meilleure clarté commerciale et vous souhaitez également comprendre les modèles de données.

Ces deux outils les plus importants pour toute entreprise. Vous pouvez atteindre ces objectifs avec vos Données . Et avec laide de ces deux éléments, vous pouvez développer votre activité et obtenir des informations commerciales claires.

Maintenant, comment? Parce quanalyser ces données volumineuses en moins de temps nest pas une tâche facile.

Défis et solutions.

Que se passe-t-il dans les très grandes entreprises vous obtenez des données de différents endroits dans différents formats. Cela peut être JSON ou XML peu importe. Nous avons donc besoin dun mécanisme pour obtenir des données complètes en un seul endroit et également dans un seul format. Donc, pour cela, nous utilisons Logstash .

Maintenant, lorsque nous obtenons des données, nous devons organiser les données dans un ordre systématique afin que nous puissions évaluer les choses très facilement. En outre, nous voulons analyser les données, dans ce cas, dabord, passer très rapidement en revue les données. Pour cela, nous avons Elasticsearch. Elasticsearch est développé en Java et est publié en open-source sous les termes de la Licence Apache .

Maintenant, après avoir terminé cela, nous avons besoin dune plate-forme de visualisation où nous pouvons montrer nos analyses de données. Là, Kibana entre en scène. Cest ainsi que fonctionnait toute la pile Elastic. Pour une meilleure Insights commerciaux .

Processus https://hackernoon.com/hn-images/1*Tvmj3XsqH4hJLvXnfm6sZQ.png

Configuration dElasticsearch, Logstash et Kibana

Commençons par télécharger les trois logiciels open source à partir de leurs liens respectifs [ elasticsearch ], [ logstash ] et [ kibana ]. Décompressez les fichiers et placez les trois dans le dossier du projet.

Commençons.

Étape 1 – Configurer Kibana et Elasticsearch sur le système local. Nous exécutons Kibana par la commande suivante dans le dossier bin de Kibana.

bin\kibana

De même, Elasticsearch est configuré comme ceci:

bin\elasticsearch

Maintenant, dans les deux terminaux séparés, nous pouvons voir les deux modules tourner.Afin de vérifier que les services fonctionnent, ouvrez localhost: 5621 pour Kibana et localhost: 9600 pour Elasticsearch.

Ici, nous sommes prêts avec la configuration de la pile élastique. Accédez maintenant à localhost: 5621 et ouvrez les outils de développement ici dans la console. Cest lendroit où vous pouvez écrire des requêtes Elasticsearch.

Console Kibana

Comme nous en parlerons plus sur Elasticsearch cette fois. Nous allons maintenant voir comment fonctionne exactement Elasticsearch.

Recherche élastique

Fonctionnement de la recherche élastique

Avant toute opération, nous devons indexer nos données. Une fois indexés dans Elasticsearch, les utilisateurs peuvent exécuter des requêtes complexes sur leurs données et utiliser des agrégations pour récupérer des résumés complexes de leurs données. Elasticsearch stocke les données sous forme de documents JSON et utilise Datastrucre comme appelé un index inversé , qui est conçu pour permettre des recherches en texte intégral très rapides . Un index inversé répertorie chaque mot unique qui apparaît dans tout document et identifie tous les documents dans lesquels chaque mot apparaît.

Pour une meilleure compréhension, nous divisez Elasticsearch en plusieurs sujets.

  1. Gestion des documents
  2. Mappages
  3. Analyse
  4. Méthodologie de recherche
  5. Agrégation et filtres

Laspect le plus important dElasticsearch est de comprendre son architecture.

Cluster

Dans Elasticserach, nous stockons nos données dans des nœuds, il peut y avoir n nombre de nœuds dans une machine. Et chaque nœud est lié au cluster. Ainsi, le cluster est un ensemble de nœuds .

Documents

Vous stockez vos données sous forme de documents qui sont des objets JSON. Alors, comment ces données sont organisées dans le cluster? La réponse est indices .

Dans le monde des bases de données relationnelles, les documents peuvent être comparés à une ligne dans un tableau.

Index

Les indices Elasticsearch sont des partitions logiques de documents et peut être comparé à une base de données dans le monde des bases de données relationnelles.

Types

Chaque index possède un ou plusieurs types de mappage qui sont utilisés pour diviser les documents en un groupe logique. Il peut être comparé à une table dans le monde des bases de données relationnelles.

Chaque document est stocké sous forme dindex . Lindex que vous pouvez dire est la collection de documents. Cela a des caractéristiques similaires, par exemple, le département aura un index A et les employés auront un index B, cest-à-dire quils sont logiquement liés.

Sharding

  1. Le sharding est juste un moyen de diviser lindex en plus petits morceaux.
  2. Chaque morceau est connu comme un fragment.
  3. Le partage se fait au niveau de lindex.

Le fragment est comme un indice. Pour lévolutivité. Avec le partitionnement, vous pouvez stocker des milliards de documents dans un seul index. Il existe également des répliques, mais pour le moment, il nous suffit de commencer et de comprendre Elasticsearch.

Passons donc plus loin à la création et au moteur de recherche.

1. Gestion des documents

Avant cela, procurez-vous le gestionnaire de packages Elasticserach.

npm i elasticsearch

Étape -1- Liez votre application à Elasticsearch en suivant.

Connexion

Étape-2 – Créer un index pour un exemple Nous créons un index comme gov.

Créer un index

Étape 3 – Nous allons maintenant ajouter des documents à lindex gov et dans lindex gov il y a un type appelé circonscriptions .

Vous pouvez établir des relations car il existe une base de données appelée gov et la table est circonscriptions.

Ajout de documents

2. Mappages

Le mappage est le processus de définition du document et de ses champs. Tout comme la définition de table-schema dans le SGBDR.

Étape-4 – Nous allons maintenant définir les mappages pour indexer les circonscriptions de type gov.

Mappages

3. Analyse

Lanalyse de texte est le processus de conversion de texte non structuré , comme le corps dun e-mail ou dune description de produit, dans un format structuré optimisé pour la recherche.

Elasticsearch effectue une analyse de texte lors de lindexation ou de la recherche

text champs . Que nous avons défini dans les mappages. Cest le facteur clé du moteur de recherche.

Par défaut, Elasticsearch utilise lanalyseur

standard pour toute analyse de texte. Lanalyseur standard vous offre un support prêt à lemploi pour la plupart des langages naturels et des cas dutilisation . Si vous choisissez dutiliser lanalyseur standard tel quel, aucune configuration supplémentaire nest nécessaire. Vous pouvez également créer votre propre analyseur personnalisé.

4. Méthodologie de recherche

Il existe différents types de requêtes que vous pouvez appliquer à Elasticsearch. Par cela, vous obtiendrez des résultats en conséquence. Ici, je vais donner un exemple de base de requête.

La requête la plus simple, qui correspond à tous les documents.

Requête de recherche

Requêtes

Les requêtes composées encapsulent dautres requêtes composées ou feuilles, soit pour combiner leurs résultats et scores, pour changer leur comportement, ou pour passer du contexte de requête au filtre.

La requête par défaut pour combiner plusieurs clauses de requête feuille ou composée, comme must, should, must\_not ou filter. Les clauses must et should ont leurs scores combinés.

Le texte intégral Les requêtes vous permettent de rechercher des champs de texte analysés tels que le corps dun e-mail. La chaîne de requête est traitée à laide du même analyseur qui a été appliqué au champ lors de lindexation. Il analysera votre entrée. Si lentrée nest pas exacte mais quand même, vous obtiendrez un résultat.

La réalisation de jointures complètes de style SQL dans un système distribué comme Elasticsearch est dun coût prohibitif. À la place, Elasticsearch propose deux formes de jointure conçues pour évoluer horizontalement.

1.

nested query

2.

has\_child et

has\_parent requêtes

Ce groupe contient des requêtes qui ne rentrent pas dans les autres groupes, Il a été constaté que des documents de nature similaire, des requêtes épinglées il y en a beaucoup plus sil vous plaît consultez sa documentation .

Vous pouvez utiliser requêtes au niveau du terme pour rechercher des documents basés sur des précisions e valeurs dans les données structurées. Des exemples de données structurées incluent des plages de dates, des adresses IP, des prix ou des ID de produit.

Contrairement aux requêtes en texte intégral, les requêtes au niveau des termes le font pas analyser les termes de recherche. Au lieu de cela, les requêtes au niveau du terme correspondent aux termes exacts stockés dans un champ. Il trouvera une correspondance exacte de lentrée là où, comme dans le texte intégral, il sera dabord analysé, puis recherché, ce qui fait une grande différence entre la requête au niveau du terme et la requête en texte intégral.

5. Agrégation et filtres

Dans un contexte de filtre, une clause de requête répond à la question « Ce document correspond-il à cette clause de requête? » La réponse est un simple oui ou non – aucun score nest calculé. Le contexte de filtre est principalement utilisé pour filtrer les données structurées, par exemple

  • Est-ce que cela timestamp tombe dans la plage 2015 à 2016?
  • Le champ status est-il défini sur "published"?

Les filtres fréquemment utilisés seront automatiquement mis en cache par Elasticsearch, pour accélérer les performances.

Le contexte de filtre est en vigueur chaque fois quune clause de requête est passée à un filter paramètre, tel que les paramètres filter ou must\_not dans les paramètres

bool, le paramètre filter dans la requête

constant\_score ou lagrégation

filter .

Avec lagrégation, cest plus comme dans le SGBDR, vous trouverez Avg, Sum et beaucoup dinformations sur les données à laide de requêtes complexes.

Résumé

  1. Quest-ce quElastic Stack?
  2. Comment fonctionne ELK?
  3. Quest-ce quElasticsearch et son fonctionnement?
  4. Quelques questions de base à ce sujet.

Et maintenant !!

Comme cest un énorme sujet à couvrir. mais jai essayé de donner une brève introduction sur ELK et Elasticsearch. Ensuite, nous allons créer notre propre moteur de recherche comme une application à laide dElasticsearch, où je couvrirai également sa partie de codage. Comment maintenir sa structure de fichiers et dautres choses.

Conclusion

Elastic Stack est une technologie très importante à apprendre. Vous lappliquerez dans nimporte lequel de vos projets et la ELK Stack est le plus souvent utilisée comme outil danalyse des journaux . Sa popularité réside dans le fait quil fournit un moyen fiable et relativement évolutif dagréger des données provenant de plusieurs sources, il reste encore beaucoup de choses, mais après cela, vous pouvez commencer avec Elasticsearch. Je vous recommande de consulter sa documentation . Si vous avez des questions ou trouvez quelque chose qui ne va pas avec le contenu, veuillez laisser un commentaire.

Merci 🙂