Elasticsearch est un moteur de recherche open source basé sur Apache Lucene, qui propose un moteur de recherche en texte intégral distribué en temps réel avec une interface Web HTTP et des documents JSON sans schéma.
Elasticsearch est développé en Java. La version open source d'Elasticsearch est publiée sous la licence Apache 2.0 et la version commerciale est publiée sous la licence Elastic. Actuellement, c'est le moteur de recherche d'entreprise le plus populaire suivi d'Apache Solr.
Cet article vous aidera à installer Elasticsearch sur CentOS 8 / RHEL 8.
Prérequis
Elasticsearch est construit à l'aide de Java et le package comprend une version groupée d'OpenJDK, ce qui signifie que vous n'avez pas besoin d'installer Java séparément pour l'installation d'Elasticsearch. L'OpenJDK fourni se trouve dans le répertoire JDK du répertoire d'accueil d'Elasticsearch /usr/share/elasticsearch.
Installer Java
Pour utiliser votre propre version de Java, installez la version LTS de Java et définissez la variable d'environnement JAVA_HOME sur votre système.
LIRE :Comment installer Java sur CentOS 8 / RHEL 8
Vérifiez la version de Java installée sur le système.
java -version
Sortie :
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
Définissez JAVA_HOME avec la commande ci-dessous.
export JAVA_HOME=<JAVA_PATH>Après avoir installé Elasticsearch sur votre système, définissez JAVA_HOME dans le fichier /etc/sysconfig/elasticsearch pour permettre à Elasticsearch d'utiliser la version Java personnalisée.
Configurer le référentiel Elasticsearch
Elastic propose un package binaire pré-construit (rpm) pour RHEL et ses dérivés. Téléchargez et installez la clé de signature publique d'Elastic.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Version gratuite
Ce forfait est libre d'utilisation. Il contient des fonctionnalités commerciales open source, gratuites et payantes. Lorsque vous installez un package, vous recevez une licence de base. Vous pouvez visiter la page d'abonnement pour lister toutes les fonctionnalités incluses dans les versions gratuites et commerciales.
Vous pouvez démarrer un essai de 30 jours pour essayer toutes les fonctionnalités payantes. A l'issue de la période d'essai, les fonctionnalités commerciales fonctionnent en mode dégradé. Vous pouvez revenir à une licence de base, prolonger la période d'essai ou acheter un abonnement.
cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Version open source
Ce package est gratuit et ne contient que des fonctionnalités disponibles sous la licence Apache 2.0.
cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Installer Elasticsearch
Installez Elasticsearch (v7.x) à l'aide de la commande suivante.
Version gratuite
yum install -y elasticsearch
Version open source
yum install -y elasticsearch-oss
Activez Elasticsearch pour qu'il démarre automatiquement au démarrage du système.
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch
Une fois que vous avez démarré le service Elasticsearch, attendez au moins une minute pour le laisser démarrer complètement. Sinon, les tests échoueront.
Elastisearch devrait maintenant écouter sur le port 9200 pour traiter les requêtes HTTP. Utilisez curl pour obtenir la réponse.
curl -X GET 'http://localhost:9200'
Vous devriez obtenir une réponse comme ci-dessous.
{ "name" : "centos8.itzgeek.local", "cluster_name" : "elasticsearch", "cluster_uuid" : "s6PwCJnoS7e7Pb3QMzkINg", "version" : { "number" : "7.4.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910", "build_date" : "2019-09-27T08:36:48.569419Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Configurer Elasticsearch
Les fichiers de configuration Elasticsearch se trouvent dans le répertoire /etc/elasticsearch/. elasticsearch.yml est le fichier de configuration principal d'Elasticsearch, et il contient les paramètres par défaut pour l'exécution du cluster de développement. Les journaux Elasticsearch sont stockés dans le répertoire /var/log/elasticsearch.
Nom du cluster
Le paramètre cluster.name est utilisé pour découvrir et joindre automatiquement le nœud avec d'autres nœuds. Si un groupe de nœuds Elasticsearch sur le même réseau a le même nom de cluster, ils se découvriront et formeront un cluster.
Modifiez le nom de cluster par défaut du nœud Elasticsearch pour éviter la jonction automatique avec d'autres nœuds sur le même réseau. Assurez-vous d'utiliser un nom de cluster unique.
Modifiez le fichier elasticsearch.yml.
vi /etc/elasticsearch/elasticsearch.yml
Remplacez els-cluster par le nom de votre cluster Elasticsearch.
cluster.name: els-cluster
Nom du nœud
Le node.name est comme un nom d'hôte pour le serveur Elasticsearch, généré dynamiquement lors du démarrage du service. Vous pouvez définir le nom du nœud en mettant à jour la ligne ci-dessous. Remplacez els-cluster-node01 par le nom de votre nœud Elasticsearch.
node.name: els-cluster-node01
Adresse d'écoute
Elasticsearch se lie à localhost (127.0.0.1) et écoute le port numéro 9200 pour le trafic HTTP par défaut. Il utilise le numéro de port 9300 - 9400 pour la communication entre les nœuds du cluster.
Pour former un cluster Elasticsearch multinœud ou utiliser le nœud Elasticsearch pour une utilisation en production afin de permettre aux applications d'accéder au nœud Elasticsearch, vous devez configurer Elasticsearch pour qu'il écoute l'adresse IP du système.
### Listening on particular IPv4 ### network.host: 192.168.0.10
OU
### Listen on All IP Address ### network.host: 0.0.0.0
Vous devez également mettre à jour les paramètres ci-dessous avec l'adresse IP de votre système.
discovery.seed_hosts: ["192.168.0.10"]
Redémarrez le service Elasticsearch.
systemctl restart elasticsearch
Une fois que vous avez redémarré le service Elasticsearch, attendez au moins une minute pour permettre à Elasticsearch de démarrer complètement.
Vérifiez si Elasticsearch écoute sur le port 9200 sur toutes les adresses IP ou une adresse IP particulière avec la commande netstat.
LIRE : Commande netstat introuvable sur CentOS 8 / RHEL 8
netstat -antup | grep -i 9200
Sortie :
tcp6 0 0 :::9200 :::* LISTEN 2143/java
Vérifiez que le nom du nœud et le nom du cluster ont été définis correctement à l'aide de curl.
curl -X GET 'http://192.168.0.10:9200'
Vous devriez obtenir une réponse comme ci-dessous.
{ "name" : "els-cluster-node01", "cluster_name" : "els-cluster", "cluster_uuid" : "s6PwCJnoS7e7Pb3QMzkINg", "version" : { "number" : "7.4.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910", "build_date" : "2019-09-27T08:36:48.569419Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Travailler avec Elasticsearch
Ajoutons quelques données à Elasticsearch. Vous pouvez utiliser la commande curl pour lire, ajouter, supprimer et mettre à jour les données dans Elasticsearch sur le port 9200 à l'aide d'une API RESTful.
Les documents sont stockés au format suivant
Elasticsearch ⇒ Indices ⇒ Types ⇒ Documents ⇒ Champs
Indice : Pluriel d'un index, où les données d'Elasticsearch sont stockées.
Type : Il contient plusieurs documents, et c'est comme le type de données.
Documents : Il contient les champs de données.
Champs : Données réelles.
Ajouter des données
Utilisez la commande curl suivante pour ajouter des données à notre Elasticsearch.
curl -XPUT 'http://localhost:9200/itzgeek/howtos/1' -H 'Content-Type: application/json' -d ' { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" }'
Vous devriez obtenir la réponse suivante avec "result":"created."
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
Où,
itzgeek : L'index du cluster Elasticsearch.
tuto : Le type de document
1 : L'identifiant de l'entrée sous les howtos et l'index itzgeek.
Lire les données
Utilisez la commande suivante pour interroger les données sur Elasticsearch.
curl -X GET 'http://localhost:9200/itzgeek/howtos/1'
Ajoutez ?pretty=true à la commande ci-dessus pour obtenir une sortie formatée.
curl -X GET 'http://localhost:9200/itzgeek/howtos/1?pretty=true'
La sortie ressemblera à ci-dessous.
{ "_index" : "itzgeek", "_type" : "howtos", "_id" : "1", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" } }
Mettre à jour les données
Utilisez la commande suivante pour mettre à jour les données.
curl -XPUT 'http://localhost:9200/itzgeek/howtos/1' -H 'Content-Type: application/json' -d ' { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" }'
Il n'y aura aucun changement dans l'index, le type et le document. Mais, les champs auront des données modifiées.
La réponse devrait ressembler à celle ci-dessous, contenir "_version":2 et "result":"updated" ce qui signifie que le document a été mis à jour.
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
Supprimer des données
Utilisez la commande suivante pour supprimer le document.
curl -X DELETE 'http://localhost:9200/itzgeek/howtos/1'
La réponse ressemblera à ci-dessous. Si le document est trouvé, vous obtiendrez "result":"supprimé".
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":3,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":2,"_primary_term":1}
Si le document n'est pas trouvé, vous obtiendrez "result":"not_found".
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":4,"result":"not_found","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":3,"_primary_term":1}
Conclusion
J'espère que vous avez appris à installer Elasticsearch sur CentOS 8 / RHEL 8 et à ajouter, lire, supprimer et mettre à jour des données dans Elasticsearch. Vous pouvez également configurer un cluster Elasticsearch à plusieurs nœuds pour gérer une grande quantité de données.