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.
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.
Quelques mots sur l'architecture d'elasticsearch:
curl -X GET "localhost:9200/_cat/nodes?v=true&pretty"
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"
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"
Une fois l'importation terminée, on peut afficher les statuts des index existants:
curl -X GET "localhost:9200/_cat/indices?v=true"
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: