Table des matières

, , , ,

Elasticsearch: premiers pas

La communication avec Elasticsearch se fait via une API REST, il est possible d'utiliser de simples clients CLI tels que cURL ou HTTPie. Pour des requêtes plus évoluée des applications comme Insomnia pourront apporter plus de confort à l'utilisation.

Kibana intègre une console de développement avec de l'autocomplétion. Management > Dev Tools onglet Console.

Avec curl on pourra utiliser la syntaxe globale suivante:

culr -X<VERB> 'https://host:port/path?query' -d '<BODY>'

Où <VERB> est la méthode ou verbe HTTP (GET,POST,PUT,HEAD,DELETE) et <BODY> un corps encodé en JSON si nécessaire.

A propos de l'architecture

Quelques mots sur l'architecture d'elasticsearch:

Afficher l'état des nœuds

curl -X GET "localhost:9200/_cat/nodes?v=true&pretty"

Indexer un document

curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
> {
>   "name": "John Doe"
> }
> '

La requête ci-dessus crée un index customer s'il n'existe pas et ajoute un nouveau document avec l'identifiant 1. Elle stocke et indexe le champ(field) name.

Le document est accessible immédiatement

curl -X GET "localhost:9200/customer/_doc/1?pretty"

Indexation par lots

Pour indexer un grand volume de documents, l'API bulk(en masse) peut être utilisée. L'utilisation de cette API permettant de traiter par lots est bien plus rapide que la soumission par requêtes individuelles.

Dans l'exemple ci-dessous, le document accounts.json contient les données structurées en JSON que l'on souhaite importer:

curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"

Afficher les status des index

Une fois l'importation terminée, on peut afficher les statuts des index existants:

curl -X GET "localhost:9200/_cat/indices?v=true"

Recherche

La recherche s'effectue en envoyant des requêtes sur le point d'entrée _search. Pour bénéficier de l'ensemble des capacités du moteur de recherche, on utilise la syntaxe Query DSL d'Elasticsearch pour définir les critères dans le corps de la requête. Le nom de l'index sur lequel lancer la recherche est spécifier dans l'URI:

curl -X GET "localhost:9200/bank/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} },
  "sort": [
    { "account_number": "asc" }
  ]
}
'

Dans l'exemple ci-dessus on récupère tous les documents que l'on tri par valeur ascendante du champ (field) “account_number”.

Par défaut la section “hits” de la réponse ne comporte que les 10 premiers documents correspondant aux critères de la recherche. La réponse fournit également des informations de contexte comme:

Références