Exemple ElasticSearch Hello World
ElasticSearch est un moteur de recherche et d'analyse en temps réel basé sur REST d'entreprise Open Source. La fonctionnalité de recherche principale est conçue à l'aide d'Apache Lucene, mais prend en charge de nombreuses autres fonctionnalités.
Il est écrit en langage Java. Il prend en charge le stockage, l'indexation, la recherche et l'analyse des données en temps réel. Comme MongoDB, ElasticSearch est également un magasin de données NoSQL basé sur des documents.
Note
Site Web ElasticSearch:www.elastic.co. La dernière version d'ElasticSearch est la 5.2.1, qui a été publiée le 14 février 2017.
Caractéristiques d'ElasticSearch: -
-
Un open-source
-
Prend en charge la recherche en texte intégral simple et puissante
-
Prend en charge l'API basée sur REST (JSON sur HTTP)
-
Prend en charge la recherche et l'analyse en temps réel
-
Par définition, distribué
-
Prend en charge la fonctionnalité multi-location
-
Prise en charge des environnements Cloud et Big Data
-
Prend en charge multiplateforme
-
Magasin de données NoSQL dénormalisé
Avantages ou avantages d'ElasticSearch: -
-
Un open-source
-
Léger avec l'API REST
-
Hautement disponible. Facilement et hautement évolutif
-
Prend en charge la mise en cache des données
-
Sans schéma
-
Performances de recherche rapide
-
Prend en charge les données structurées et UN-Structured
-
Prend en charge l'architecture distribuée, de partage, de réplication, de clustering et multi-nœuds
-
Prend en charge les opérations en masse
-
Créez des graphiques et des tableaux de bord en un rien de temps
Inconvénients ou limites d'ElasticSearch: -
-
Ne prend PAS en charge les opérations MapReduce
-
Pas utile en tant que magasin de données principal
-
Pas un magasin de données compatible ACID
-
Ne prend pas en charge les transactions et les transactions distribuées
-
N'a PAS de fonction d'authentification ou d'autorisation intégrée
Clients populaires qui utilisent ElasticSearch: -
-
Github.com, Quora.com, Stackoverflow.com
-
eBay, DELL, Cisco, Mozilla, Wikimedia
-
Netflix, Symatics, Facebook
-
UK HMRC (HM Revenue & Customs)
Par exemple, Github.com utilise ElasticSearch pour rechercher des fichiers, l'historique, les numéros de ticket, etc. La plupart des entreprises utilisent la pile ELK pour gérer leurs journaux et surveiller leurs systèmes. ELK signifie ElasticSearch Logstash et Kibana.
Note
Vous pouvez trouver d'autres cas d'utilisation de clients àhttps://www.elastic.co/use-cases
1. Installer ElasticSearch localement
Note
Comme nous le savons, ElasticSearch est écrit en Java. Donc, nous devrions avoir Java / JRE dans notre chemin système pour l'utiliser. Veuillez installer et configurer correctement l'environnement Java.
Pour installer ElasticSearch sur votre système de fichiers local, veuillez suivre ces instructions.
1.1 Download ElasticSearch from https://www.elastic.co/downloads/elasticsearch
1.2 Windows
-
Téléchargez et extrayez le fichier Zip dans le système de fichiers local: elasticsearch-5.2.1.zip
-
Fichier Zip extrait vers F: \ elasticsearch-5.2.1
-
Définir la variable d'environnement
PATH = F:\elasticsearch-5.2.1\bin
Démarrer ElasticSearch
F:/>elasticsearch.bat
Accédez à ElasticSearch avechttp://localhost:9200 depuis le navigateur. Nous pouvons utiliser Ctrl + C pour arrêter l'invite ElasticSearch à partir de CMD.
1.3 Ubuntu Linux: Install with tar file
-
Téléchargez et extrayez le fichier Tar dans le système de fichiers local
tar -xvf elasticsearch-5.2.1.tar.gz
Démarrer ElasticSearch
$ ./elasticsearch
Accédez à ElasticSearch avechttp://localhost:9200 depuis le navigateur
1.4 Ubuntu Linux: Install with commands
-
Exécutez la commande suivante pour télécharger ElasticSearch
$ sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.1.deb
Il télécharge le fichier DEB d'ElasticSearch: elasticsearch-5.2.1.deb
Exécutez la commande dpkg suivante pour installer ElasticSearch
$ sudo dpkg -i elasticsearch-5.2.1.deb
Par défaut, il installe ElasticSearch dans «/ usr / share / elasticsearch».
Démarrer ElasticSearch
$ ./elasticsearch
Accédez à ElasticSearch avechttp://localhost:9200 depuis le navigateur
Note
Le numéro de port par défaut d'ElasticSearch est9200
. Si nécessaire, nous pouvons modifier ce numéro de port.
1.5 After ElasticSearch is started, access the default URL, we will get the following default Response
Navigateur:http://localhost:9200
{ "name" : "rBvi0Hs", "cluster_name" : "elasticsearch", "cluster_uuid" : "kOQQ_nqfTW-b4vQ00XSvdg", "version" : { "number" : "5.2.1", "build_hash" : "db0d481", "build_date" : "2017-02-09T22:05:32.386Z", "build_snapshot" : false, "lucene_version" : "6.4.1" }, "tagline" : "You Know, for Search" }
Note
Vous pouvez trouver le code source d'ElasticSearch àhttps://github.com/elastic/elasticsearch
2. Principes de base de l'URL de l'API REST ElasticSearch
L'URL de l'API REST ElasticSearch doit respecter le format suivant.
Here
-
Serveur signifie n'importe quel nom de serveur ou nom d'hôte comme «monserveur». Parfois, nous utilisons le numéro de nœud + port comme «myhost: 9999».
-
L'index doit être en minuscules, sinon il lève une exception.
-
Il est recommandé d'utiliser Type également en minuscules.
Nous discuterons plus en détail de cette utilisation et de l'exception de l'API REST avec quelques exemples dans les sections suivantes.
3. Terminologie ElasticSearch
Nous discuterons de quelques terminologies importantes d'ElasticSearch:Index
,Type
,Document
,Key
,Value
etc.
3.1 What is an Index in ElasticSearch?
Dans ElasticSearch, un index est une collection de documents. Par exemple, «librairie» est un document. L'index est utilisé pour l'indexation, la recherche, la mise à jour et la suppression de documents. Il doit être en minuscules.
Un index est similaire à Database dans Relation Database World.
3.2 What is a Type in ElasticSearch?
Dans ElasticSearch, un type est une catégorie de documents similaires. Cela signifie que nous pouvons regrouper un ensemble de documents similaires dans un type. Comme nous le savons dans le monde réel, une «librairie» contient différents types d'articles: une collection de «livres», une collection de stylos, crayons, CD, etc. De la même manière, le document «librairie» (un type d'index) peut contenir une collection de types: livres, stylos, CD, etc.
Un type est similaire à Table dans Relation Database World.
3.3 What is a Document in ElasticSearch?
Dans ElasticSearch, un document est une instance d'un type. Il contient des données avec des foires clé et valeur. Par exemple, «titre»: «Programmation fonctionnelle en Java» est une clé: juste valeur d'un document de type: «Livres». Chaque document a un identifiant.
Un document est similaire à une ligne dans une table dans Relation Database World. La clé est le nom de la colonne et la valeur la valeur de la colonne.
4. Principes de base des commandes ElasticSearch
Comme nous le savons, ElasticSearch prend en charge l'API basée sur REST (JSON sur protocole HTTP) pour prendre en charge les opérations CRUD (Create Read Update Delete). Il utilise des méthodes HTTP pour effectuer ses opérations.
Requête HTTP Mothod | Usage |
---|---|
GET |
Pour obtenir ou sélectionner ou lire des données à partir d'ElasticSearch |
POST |
Pour créer ou mettre à jour des données vers ElasticSearch |
PUT |
Pour créer ou mettre à jour des données vers ElasticSearch |
EFFACER |
Pour supprimer ou supprimer des données existantes d'ElasticSearch |
Note
Pour tester les opérations ElasticSearch, nous pouvons utiliser tous les clients REST tels que POSTMAN, Fiddler, commande CURL, Sense etc. Je vais utiliserGoogle Chrome
POSTMAN pour explorer les API REST ElasticSearch. You can install POSTMAN or Sense as Chrome Extensions.
5. Opérations CRUD ElasticSearch
Développons une fonctionnalité de recherche pour le site Web Mkyong.com en utilisant ElasticSearch pour rechercher les détails des articles, les détails de l'auteur, etc.
5.1 CREATE Operation Example
Pour insérer un nouveau document avec/techfou/posts/1001
et les données de demande suivantes:
{ "title": "Java 8 Optional In Depth", "category":"Java", "published_date":"23-FEB-2017", "author":"Rambabu Posa" }
Ici, 1001 est l'identifiant du document. Il est utilisé pour l'identifier de manière unique.
La description:-
-
Pour créer un nouveau document, nous utilisons une méthode de requête HTTP POST.
-
Notre nœud: Numéro de port:http://localhost:9200
-
Nom de l'index: techfou
-
Nom du type: messages
-
As Request body type as JSON or add request header: "Content-Type": "application / json"
-
Cliquez sur le bouton «ENVOYER» pour la réponse.
-
Nous pouvons observer les paires clé: valeur suivantes dans les données de réponse.
"_index":"example" "_type":"posts" "result":"created" "created":true
Nous pouvons observer les journaux suivants dans l'invite CMD.
[2017-02-26T21:10:33,941][INFO ][o.e.c.m.MetaDataCreateIndexService] [aH4GiIP] [example] creating index, cause [auto(index api)], templates [], shards [5]/[1], mappings [] [2017-02-26T21:10:35,790][INFO ][o.e.c.m.MetaDataMappingService] [aH4GiIP] [example/KJsGZgF-Try0k4OHWAgARQ] create_mapping [posts]
Veuillez insérer les documents suivants de la même manière:
"/example/posts/1002" { "title": "Elastic Search Basics", "category":"ElasticSearch", "published_date":"03-MAR-2017", "author":"Rambabu Posa" } "/example/posts/1003" { "title": "Spring + Spring Data + ElasticSearch", "category":"Spring", "published_date":"11-MAR-2017", "author":"Rambabu Posa" } "/example/posts/1004" { "title": "Spring + Spring Data + ElasticSearch", "category":"Spring Boot", "published_date":"23-MAR-2017", "author":"Rambabu Posa" }
5.2 READ Operation Example
Pour lire, interroger ou sélectionner des données à partir d'ElasticSearch, nous devons utiliser «_search» à la fin de l'URL de l'API REAT.
La description:-
-
Vous pouvez observer «_search» dans l'URL.
-
La réponse indique: «total»: 4 (4 enregistrements au total trouvés avec cet index et ce type.)
5.3 READ Operation With Query Parameters Example
Nous pouvons utiliser des paramètres de requête en utilisant la syntaxe «? q =:» dans Query pour filtrer les enregistrements.
La description:-
-
Nous pouvons observer les paires clé: valeur suivantes dans les données de réponse. Il indique au total un enregistrement trouvé dans cette recherche.
"total":"1" "_id":"1002"
5.4 UPDATE Operation Example
Souhaiterait mettre à jour les données d'un document existant comme indiqué ci-dessous:
La description:-
-
Nous pouvons observer les paires clé: valeur suivantes dans les données de réponse. Il indique que le document est mis à jour, mais pas créé.
"result":"updated" "created":"false"
Vérifiez le même document
5.5 DELETE Operation Example
Souhaiterait supprimer un document dont_id = 1004
La description:-
-
Nous pouvons observer les paires clé: valeur suivantes dans les données de réponse. Il indique que le document est supprimé avec succès.
"result":"deleted" "successful":"1"
6. L'index doit être en minuscules
Comme nous l'avons vu, Index doit être en minuscules. Sinon, il génère une erreur comme indiqué ci-dessous:
Comme nous n'utilisons PAS Index: «Mkyong» en minuscules, cela renvoie un message d'erreur très significatif: «Le nom d'index invalide [Mkyong] doit être en minuscules».
Note
Le type peut être en majuscules, mais ce n'est pas recommandé.