GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer Elasticsearch sur Debian 11 Bullseye

Elasticsearch est un moteur de recherche et d'analyse en texte intégral open source hautement évolutif . Le logiciel prend en charge les opérations RESTful qui vous permettent de stocker, de rechercher et d'analyser de gros volumes de données rapidement et en temps quasi réel. Elasticsearch est apprécié et populaire parmi les administrateurs système et les développeurs car il s'agit d'un puissant moteur de recherche basé sur la bibliothèque Lucene. Il est généralement utilisé comme moteur/technologie sous-jacent qui alimente les applications avec des fonctionnalités et des exigences de recherche complexes.

Dans le didacticiel suivant, vous apprendrez comment installer Elastic Search sur Debian 11 Bullseye .

Prérequis

  • OS recommandé : Debian 11 Bullseye
  • Compte utilisateur : Un compte utilisateur avec un accès sudo ou root.
  • Packages requis : Curl et Java

Installer Curl

Onduler est nécessaire pour certaines parties de ce guide. Pour installer ce package, tapez la commande suivante :

sudo apt install curl -y

Installer Java

Pour réussir l'installation et, plus important encore, utiliser Elasticsearch , vous devez installer Java . Le processus est assez simple.

Tapez la commande suivante pour installer OpenJDK paquet :

sudo apt install default-jdk

Exemple de sortie avec les packages à installer :

Pour poursuivre l'installation, tapez (Y) puis appuyez sur (ENTER) clé.

Ensuite, vérifiez la version Java installée et le build avec la commande suivante :

java -version

Exemple de résultat ci-dessous :

Installer Elasticsearch

Elasticsearch n'est pas disponible dans les référentiels standard Debian 11, vous devrez donc l'installer à partir du référentiel Elasticsearch APT.

Avant d'ajouter le référentiel, importez la clé GPG avec la commande suivante :

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Exemple de sortie avec (Ok) confirmant qu'il a réussi :

Maintenant que vous avez ajouté la clé GPG, les référentiels Elasticsearch seront désormais approuvés. Procédez à l'installation du référentiel officiel avec la commande de terminal suivante :

sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

Au moment de la création du didacticiel, Elasticsearch 7.13.4 est la dernière version mais changera avec le temps, et le référentiel que vous avez ajouté fonctionnera pour toutes les versions 7.x.x à l'avenir.

Ensuite, mettez à jour votre liste de référentiels et installez Elasticsearch comme suit :

sudo apt update && sudo apt install elasticsearch

Par défaut, le service Elasticsearch est désactivé au démarrage et non actif. Pour démarrer le service et l'activer au démarrage du système, tapez ce qui suit (systemctl) commande :

sudo systemctl enable elasticsearch.service --now

Ensuite, pour vérifier qu'Elasticsearch fonctionne correctement, vous utiliserez la curl commande pour envoyer une requête HTTP au port 9200 sur localhost comme suit :

curl -X GET "localhost:9200/"

Exemple de sortie pour vérifier qu'Elasticsearch fonctionne correctement :

Pour afficher le message système qu'Elasticsearch enregistre sur votre système, saisissez la commande suivante :

sudo journalctl -u elasticsearch

Exemple de journal de sortie :

Configurer Elasticsearch

Les données Elasticsearch sont stockées dans l'emplacement du répertoire par défaut (/var/lib/elasticsearch) . Pour afficher ou modifier les fichiers de configuration, vous pouvez les trouver à l'emplacement du répertoire (/etc/elasticsearch) , et les options de démarrage Java peuvent être configurées dans (/etc/default/elasticsearch) fichier de configuration.

Les paramètres par défaut conviennent généralement aux serveurs d'exploitation uniques, car Elasticsearch s'exécute sur localhost seul. Cependant, si vous envisagez de configurer un cluster, vous devrez modifier le fichier de configuration pour autoriser les connexions à distance.

Configurer l'accès à distance (facultatif)

Par défaut, Elasticsearch n'écoute que localhost. Pour changer cela, ouvrez le fichier de configuration comme suit :

sudo nano /etc/elasticsearch/elasticsearch.yml

Ensuite, faites défiler vers le bas et trouvez la section Réseau et décommentez (#) la ligne suivante et remplacez-la par l'adresse IP privée interne ou l'adresse IP externe comme suit :

Dans l'exemple, nous avons décommenté (#) le (network.host) et l'a remplacé par une adresse IP privée interne.

Pour des raisons de sécurité, il est idéal pour spécifier des adresses; cependant, si vous avez plusieurs adresses IP internes ou externes sur le serveur, modifiez l'interface réseau pour écouter tout le monde en saisissant (0.0.0.0) comme suit :

Ensuite, enregistrez le fichier de configuration (CTRL+O) puis quittez (CLTR+X) .

Vous devrez redémarrer le service Elasticsearch avec la commande suivante pour que les modifications prennent effet :

sudo systemctl restart elasticsearch

Configurer le pare-feu UFW pour autoriser les connexions à distance

Si vous autorisez les connexions à distance, vous devrez autoriser votre pare-feu à autoriser ces adresses IP à se connecter. Cela peut être fait avec la commande suivante :

sudo ufw allow from <IP Address> to any port 9200

Vous trouverez plus d'informations sur Debian et le pare-feu UFW pour configurer le pare-feu UFW sur Debian.

Comment utiliser Elasticsearch

Pour utiliser Elasticsearch à l'aide de la commande curl est un processus simple. Voici quelques-uns des plus couramment utilisés :

Supprimer l'index

Sous l'index est nommé samples .

curl -X DELETE 'http://localhost:9200/samples'

Répertorier tous les index

curl -X GET 'http://localhost:9200/_cat/indices?v'

Répertorier tous les documents dans l'index

curl -X GET 'http://localhost:9200/sample/_search'

Requête utilisant des paramètres d'URL

Ici, nous utilisons le format de requête Lucene pour écrire q=school:Harvard.

curl -X GET http://localhost:9200/samples/_search?q=school:Harvard

Requête avec JSON alias Elasticsearch Query DSL

Vous pouvez interroger à l'aide de paramètres sur l'URL. Mais vous pouvez également utiliser JSON, comme illustré dans l'exemple suivant. JSON serait plus facile à lire et à déboguer lorsque vous avez une requête complexe qu'une chaîne géante de paramètres d'URL.

curl -XGET --header 'Content-Type: application/json' http://localhost:9200/samples/_search -d '{
      "query" : {
        "match" : { "school": "Harvard" }
    }
}'

Mappage d'index de liste

Tous les champs Elasticsearch sont des index. Donc, cela répertorie tous les champs et leurs types dans un index.

curl -X GET http://localhost:9200/samples

Ajouter des données

curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/1 -d '{
   "school" : "Harvard"			
}'

Mettre à jour le document

Voici comment ajouter des champs à un document existant. Tout d'abord, nous en créons un nouveau. Ensuite, nous le mettons à jour.

curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2 -d '
{
    "school": "Clemson"
}'

curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2/_update -d '{
"doc" : {
               "students": 50000}
}'

Index de sauvegarde

curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/_reindex -d '{
  "source": {
    "index": "samples"
  },
  "dest": {
    "index": "samples_backup"
  }
}'

Charger des données en masse au format JSON

export pwd="elastic:"

curl --user $pwd  -H 'Content-Type: application/x-ndjson' -XPOST 'https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/0/_bulk?pretty' --data-binary @<file>

Afficher l'état du cluster

curl --user $pwd  -H 'Content-Type: application/json' -XGET https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/_cluster/health?pretty

Agrégation et agrégation de buckets

Pour un serveur Web Nginx, cela produit le nombre de visites Web par ville d'utilisateur :

curl -XGET --user $pwd --header 'Content-Type: application/json'  https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
        "aggs": {
             "cityName": {
                    "terms": {
                     "field": "geoip.city_name.keyword",
                                "size": 50

        }
   }
  }
}
'

Cela étend cela au nombre de codes de réponse de produit par ville dans un journal de serveur Web Nginx

curl -XGET --user $pwd --header 'Content-Type: application/json'  https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
        "aggs": {
          "city": {
                "terms": {
                        "field": "geoip.city_name.keyword"
                },
        "aggs": {
          "responses": {
                "terms": {
                     "field": "response"
                 }
           }
         }
      },
      "responses": {
                "terms": {
                     "field": "response"
                 }
        }
   }
}'

Utiliser ElasticSearch avec l'authentification de base

Si vous avez activé la sécurité avec ElasticSearch, vous devez fournir l'utilisateur et le mot de passe comme indiqué ci-dessous à chaque commande curl :

curl -X GET 'http://localhost:9200/_cat/indices?v' -u elastic:(password)

Jolie impression

Ajoutez ?pretty=true à n'importe quelle recherche pour imprimer joliment le JSON. Comme ceci :

 curl -X GET 'http://localhost:9200/(index)/_search'?pretty=true

Pour interroger et renvoyer uniquement certains champs

Pour ne renvoyer que certains champs, placez-les dans le tableau _source :

GET filebeat-7.6.2-2020.05.05-000001/_search
 {
    "_source": ["suricata.eve.timestamp","source.geo.region_name","event.created"],
    "query":      {
        "match" : { "source.geo.country_iso_code": "GR" }
    }
}

Pour interroger par date

Lorsque le champ est de type date, vous pouvez utiliser les calculs de date, comme ceci :

GET filebeat-7.6.2-2020.05.05-000001/_search
 {
    "query": {
        "range" : {
            "event.created": {
                "gte" : "now-7d/d"
            }
        }
}
}

Désinstaller Elasticsearch

Si vous n'avez plus besoin d'Elasticsearch, vous pouvez supprimer le logiciel avec la commande suivante :

sudo apt remove elasticsearch

Supprimez le référentiel apt comme suit :

sudo rm /etc/apt/sources.list.d/elastic-7.x.list

Ensuite, mettez à jour votre liste de référentiels pour refléter les modifications :

sudo apt update

Debian
  1. Comment installer Elasticsearch sur Debian Linux

  2. Comment installer R sur Debian 9

  3. Comment installer Elasticsearch sur Debian 9

  4. Comment installer Python 3.8 sur Debian 11 Bullseye

  5. Comment installer Python 3.9 sur Debian 11 Bullseye

Comment installer VidCutter sur Debian 11 Bullseye

Comment installer PuTTY sur Debian 11 Bullseye

Comment installer Graylog sur Debian 9

Comment installer Go sur Debian 10

Comment installer Elasticsearch sur Debian 11

Comment installer Go sur Debian