ElasticsearchDémarrer avec Elasticsearch


Remarques

Elasticsearch est un serveur de recherche open source avancé basé sur Lucene et écrit en Java.

Il fournit des fonctionnalités de recherche distribuées, en texte intégral ou partiel, basées sur la requête et la géolocalisation, accessibles via une API HTTP REST.

Versions

Version Date de sortie
5.2.1 2017-02-14
5.2.0 2017-01-31
5.1.2 2017-01-12
5.1.1 2016-12-08
5.0.2 2016-11-29
5.0.1 2016-11-15
5.0.0 2016-10-26
2.4.0 2016-08-31
2.3.0 2016-03-30
2.2.0 2016-02-02
2.1.0 2015-11-24
2.0.0 2015-10-28
1.7.0 2015-07-16
1.6.0 2015-06-09
1.5.0 2015-03-06
1.4.0 2014-11-05
1.3.0 2014-07-23
1.2.0 2014-05-22
1.1.0 2014-03-25
1.0.0 2014-02-14

Paramètres de recherche de base avec des exemples:

Par défaut, le document indexé complet est renvoyé dans le cadre de toutes les recherches. C'est ce que l'on appelle la source (champ _source dans les résultats de recherche). Si nous ne voulons pas que tout le document source soit retourné, nous avons la possibilité de ne demander que quelques champs de la source à retourner, ou nous pouvons définir _source sur false pour omettre complètement le champ.

Cet exemple montre comment retourner deux champs, account_number et balance (à l'intérieur de _source ), à partir de la recherche:

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_all": {} },
  "_source": ["account_number", "balance"]
}'
 

Notez que l'exemple ci-dessus réduit simplement les informations renvoyées dans le champ _source . Il ne renverra toujours qu'un seul champ nommé _source mais seuls les champs account_number et balance seront inclus.

Si vous venez d'un arrière-plan SQL, le concept ci-dessus est quelque peu similaire à la requête SQL

SELECT account_number, balance FROM bank;
 

Passons maintenant à la partie requête. Auparavant, nous avons vu comment la requête match_all est utilisée pour faire correspondre tous les documents. Introduisons maintenant une nouvelle requête appelée la requête de correspondance, qui peut être considérée comme une requête de recherche par champs de base (c'est-à-dire une recherche effectuée sur un champ ou un ensemble de champs spécifique).

Cet exemple renvoie le compte avec le account_number défini à 20 :

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "account_number": 20 } }
}'
 

Cet exemple renvoie tous les comptes contenant le terme "moulin" dans l' address :

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "address": "mill" } }
}'
 

Cet exemple renvoie tous les comptes contenant le terme "moulin" ou "voie" dans l' address :

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "address": "mill lane" } }
}'
 

Cet exemple est une variante de match ( match_phrase ) qui divise la requête en termes et ne renvoie que les documents contenant tous les termes de l' address dans les mêmes positions les uns par rapport aux autres [1] .

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_phrase": { "address": "mill lane" } }
}'
 

Introduisons maintenant la requête bool (ean). La requête bool nous permet de composer des requêtes plus petites en requêtes plus grandes en utilisant la logique booléenne.

Cet exemple compose deux requêtes de correspondance et renvoie tous les comptes contenant "mill" et "lane" dans l'adresse:

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}'
 

Dans l'exemple ci-dessus, la clause bool must spécifie toutes les requêtes devant être vraies pour qu'un document soit considéré comme une correspondance.

En revanche, cet exemple compose deux requêtes de correspondance et renvoie tous les comptes contenant "mill" ou "lane" dans l' address :

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "should": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}'
 

Dans l'exemple ci-dessus, la clause bool should spécifie une liste de requêtes dont l'une ou l'autre doit être vraie pour qu'un document soit considéré comme une correspondance.

Cet exemple compose deux requêtes de correspondance et renvoie tous les comptes qui ne contiennent ni "mill" ni "lane" dans l' address :

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must_not": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}'
 

Dans l'exemple ci-dessus, la clause bool must_not spécifie une liste de requêtes dont aucune ne doit être vraie pour qu'un document soit considéré comme une correspondance.

Nous pouvons combiner des clauses must, should et must_not simultanément dans une requête bool. De plus, nous pouvons composer des requêtes bool dans chacune de ces clauses bool pour imiter toute logique booléenne complexe à plusieurs niveaux.

Cet exemple renvoie tous les comptes appartenant à des personnes qui ont exactement 40 ans et ne vivent pas à Washington ( WA en abrégé):

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "age": "40" } }
      ],
      "must_not": [
        { "match": { "state": "WA" } }
      ]
    }
  }
}'
 

Indexer et récupérer un document

Elasticsearch est accessible via une API HTTP REST, généralement via la bibliothèque cURL. Les messages entre le serveur de recherche et le client (votre ou votre application) sont envoyés sous la forme de chaînes JSON. Par défaut, Elasticsearch s'exécute sur le port 9200.

Dans les exemples ci-dessous, ?pretty est ajouté pour indiquer à Elasticsearch de préciser la réponse JSON. Lorsque vous utilisez ces points de terminaison dans une application, vous n'avez pas besoin d'ajouter ce paramètre de requête.

Documents d'indexation

Si nous avons l'intention de mettre à jour les informations dans un index ultérieurement, nous vous conseillons d'attribuer des identifiants uniques aux documents que vous indexez. Pour ajouter un document à l'index nommé megacorp , avec type employee et ID 1 exécutez:

curl -XPUT "http://localhost:9200/megacorp/employee/1?pretty" -d'
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}' 
 

Réponse:

{
  "_index": "megacorp",
  "_type": "employee",
  "_id": "1",
  "_version": 1,
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "created": true
}

 

L'index est créé s'il n'existe pas lorsque nous envoyons l'appel PUT.

Indexation sans identifiant

POST /megacorp/employee?pretty
{
    "first_name" :  "Jane",
    "last_name" :   "Smith",
    "age" :         32,
    "about" :       "I like to collect rock albums",
    "interests":  [ "music" ]
}
 

Réponse:

{
  "_index": "megacorp",
  "_type": "employee",
  "_id": "AVYg2mBJYy9ijdngfeGa",
  "_version": 1,
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "created": true
}

 

Récupération de documents

curl -XGET "http://localhost:9200/megacorp/employee/1?pretty"
 

Réponse:

{
  "_index": "megacorp",
  "_type": "employee",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
    "first_name": "John",
    "last_name": "Smith",
    "age": 25,
    "about": "I love to go rock climbing",
    "interests": [
      "sports",
      "music"
    ]
  }
}

 

Récupérez 10 documents à partir de l'index megacorp avec le type employee :

curl -XGET "http://localhost:9200/megacorp/employee/_search?pretty"
 

Réponse:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 2,
    "max_score": 1,
    "hits": [
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "1",
        "_score": 1,
        "_source": {
          "first_name": "John",
          "last_name": "Smith",
          "age": 25,
          "about": "I love to go rock climbing",
          "interests": [
            "sports",
            "music"
          ]
        }
      },
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "AVYg2mBJYy9ijdngfeGa",
        "_score": 1,
        "_source": {
          "first_name": "Jane",
          "last_name": "Smith",
          "age": 32,
          "about": "I like to collect rock albums",
          "interests": [
            "music"
          ]
        }
      }
    ]
  }
}

 

Recherche simple à l'aide de la requête de match , qui recherche des correspondances exactes dans le champ fourni:

curl -XGET "http://localhost:9200/megacorp/employee/_search" -d'
{
    "query" : {
        "match" : {
            "last_name" : "Smith"
        }
    }
}'
 

Réponse:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.6931472,
    "hits": [
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "1",
        "_score": 0.6931472,
        "_source": {
          "first_name": "John",
          "last_name": "Smith",
          "age": 25,
          "about": "I love to go rock climbing",
          "interests": [
            "sports",
            "music"
          ]
        }
      }
    ]
  }
}

 

Installer Elasticsearch et Kibana sur CentOS 7

Pour exécuter Elasticsearch, un environnement d'exécution Java (JRE) est requis sur la machine. Elasticsearch nécessite Java 7 ou supérieur et recommande Oracle JDK version 1.8.0_73 .

Alors, assurez-vous d'avoir Java dans votre système. Sinon, suivez la procédure:

# Install wget with yum 
yum -y install wget

# Download the rpm jre-8u60-linux-x64.rpm for 64 bit 
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jre-8u60-linux-x64.rpm"

# Download the rpm jre-8u101-linux-i586.rpm for 32 bit
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jre-8u101-linux-i586.rpm"

# Install jre-.*.rpm
rpm -ivh jre-.*.rpm
 

Java devrait maintenant être installé dans votre système centOS. Vous pouvez le vérifier avec:

java -version
 

Téléchargez et installez elasticsearch

# Download elasticsearch-2.3.5.rpm 
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.5/elasticsearch-2.3.5.rpm

# Install elasticsearch-.*.rpm
rpm -ivh elasticsearch-.*.rpm   
 

Exécuter elasticsearch en tant que service systemd au démarrage

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

# check the current status to ensure everything is okay.
systemctl status elasticsearch
 

Installer Kibana

Importer d'abord la clé GPG sur le rpm

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
 

Ensuite, créez un dépôt local kibana.repo

sudo vi /etc/yum.repos.d/kibana.repo 
 

Et ajoutez le contenu suivant:

[kibana-4.4]
name=Kibana repository for 4.4.x packages
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
 

Installez maintenant le kibana en suivant la commande suivante:

yum -y install kibana
 

Commencez avec:

systemctl start kibana
 

Vérifier l'état avec:

systemctl status kibana
 

Vous pouvez l'exécuter en tant que service de démarrage.

systemctl enable kibana
 

Installer Elasticsearch sur Ubuntu 14.04


Conditions préalables

Pour exécuter Elasticsearch, un environnement d'exécution Java (JRE) est requis sur la machine. Elasticsearch nécessite Java 7 ou supérieur et recommande Oracle JDK version 1.8.0_73 .

Installez Oracle Java 8

sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
sudo apt-get install -y oracle-java8-installer
 

Vérifier la version de Java

java -version
 

Télécharger et installer le paquet

Utiliser des binaires

  1. Téléchargez la dernière version stable d'Elasticsearch ici .
  2. Décompressez le fichier et exécutez

Linux:

$ bin/elasticsearch
 

Utiliser apt-get

Une alternative à télécharger elasticsearch à partir du site Web est de l’installer, en utilisant apt-get .

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo /etc/init.d/elasticsearch start
 

Installation d'elasticsearch version 5.x

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update && sudo apt-get install elasticsearch
 

Exécuter en tant que service sous Linux:

Après l'installation, ce qui précède ne se lance pas. nous devons donc le démarrer en tant que service. Comment démarrer ou arrêter Elasticsearch selon que votre système utilise SysV init ou systemd. vous pouvez le vérifier avec la commande suivante.

ps -p 1
 

Si votre distribution utilise SysV init, vous devrez exécuter:

sudo update-rc.d elasticsearch defaults 95 10
sudo /etc/init.d/elasticsearch start
 

Sinon, si votre distribution utilise systemd:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
 

Exécutez la commande CURL partir de votre navigateur ou d'un client REST pour vérifier si Elasticsearch a été correctement installé.

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

Installation d'Elasticsearch sous Windows

Conditions préalables

La version Windows d'Elasticsearch peut être obtenue à partir de ce lien: https://www.elastic.co/downloads/elasticsearch . La dernière version stable est toujours au top.

Comme nous installons sous Windows, nous avons besoin de l’archive .ZIP . Cliquez sur le lien dans la section Downloads: enregistrez le fichier sur votre ordinateur.

Cette version d'Elastic est "portable", ce qui signifie que vous n'avez pas besoin de lancer un programme d'installation pour utiliser le programme. Décompressez le contenu du fichier dans un endroit facile à mémoriser. Pour démonstration, nous supposerons que tout est décompressé en C:\elasticsearch .

Notez que l'archive contient un dossier nommé elasticsearch-<version> par défaut, vous pouvez soit extraire ce dossier dans C:\ et le renommer en elasticsearch soit créer C:\elasticsearch vous-même, puis décompresser uniquement le contenu du dossier dans l'archive. à là

Elasticsearch étant écrit en Java, il a besoin de Java Runtime Environment pour fonctionner. Donc, avant d'exécuter le serveur, vérifiez si Java est disponible en ouvrant une invite de commande et en tapant:

java -version
 

Vous devriez avoir une réponse qui ressemble à ceci:

java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) Client VM (build 25.91-b14, mixed mode)
 

Si vous voyez ce qui suit à la place

"java" n'est pas reconnu comme une commande interne ou externe, un programme utilisable ou un fichier de commandes.

Java n'est pas installé sur votre système ou n'est pas configuré correctement. Vous pouvez suivre ce tutoriel pour (ré) installer Java. Assurez-vous également que ces variables d'environnement sont définies sur des valeurs similaires:

Variable Valeur
JAVA_HOME C: \ Program Files \ Java \ jre
CHEMIN …; C: \ Program Files \ Java \ jre

Si vous ne savez pas encore comment inspecter ces variables, consultez ce tutoriel .

Exécuter à partir du fichier de commandes

Avec Java installé, ouvrez le dossier bin . Il peut être trouvé directement dans le dossier vers lequel vous avez décompressé le tout, il devrait donc être sous c:\elasticsearch\bin . Dans ce dossier se trouve un fichier appelé elasticsearch.bat qui peut être utilisé pour démarrer Elasticsearch dans une fenêtre de commande. Cela signifie que les informations consignées par le processus seront visibles dans la fenêtre d'invite de commandes. Pour arrêter le serveur, appuyez sur CTRL C ou fermez simplement la fenêtre.

Exécuter en tant que service Windows

Idéalement, vous ne voulez pas avoir une fenêtre supplémentaire dont vous ne pouvez vous débarrasser pendant le développement, et pour cette raison, Elasticsearch peut être configuré pour s'exécuter en tant que service.

Avant de pouvoir installer Elasticsearch en tant que service, nous devons ajouter une ligne au fichier C:\elasticsearch\config\jvm.options :

Le programme d'installation du service nécessite que le paramètre de taille de la pile de threads soit configuré dans jvm.options avant d'installer le service. Sur Windows 32 bits, vous devez ajouter -Xss320k […] et sur Windows 64 bits, vous devez ajouter -Xss1m au fichier jvm.options . [la source]

Une fois cette modification effectuée, ouvrez une invite de commande et accédez au répertoire bin en exécutant la commande suivante:

C:\Users\user> cd c:\elasticsearch\bin
 

La gestion des services est gérée par elasticsearch-service.bat . Dans les anciennes versions, ce fichier pourrait simplement s'appeler service.bat . Pour voir tous les arguments disponibles, exécutez-le sans aucun:

C:\elasticsearch\bin> elasticsearch-service.bat

Usage: elasticsearch-service.bat install|remove|start|stop|manager [SERVICE_ID]
 

La sortie nous indique également qu'il existe un argument SERVICE_ID facultatif, mais nous pouvons l'ignorer pour l'instant. Pour installer le service, exécutez simplement:

C:\elasticsearch\bin> elasticsearch-service.bat install
 

Après avoir installé le service, vous pouvez le démarrer et l'arrêter avec les arguments respectifs. Pour démarrer le service, exécutez

C:\elasticsearch\bin> elasticsearch-service.bat start
 

et pour l'arrêter, courez

C:\elasticsearch\bin> elasticsearch-service.bat stop
 

Si vous préférez une interface graphique pour gérer le service à la place, vous pouvez utiliser la commande suivante:

C:\elasticsearch\bin> elasticsearch-service.bat manager
 

Cela ouvrira Elastic Service Manager, qui vous permet de personnaliser certains paramètres liés au service et d’arrêter / démarrer le service à l’aide des boutons situés en bas du premier onglet.