Exemple ElasticSearch Hello World

Exemple ElasticSearch Hello World

image

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

image

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

{
  "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.

image

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.

image

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.

image

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.

image

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:

image

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

image

5.5 DELETE Operation Example
Souhaiterait supprimer un document dont_id = 1004

image

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:

image

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é.