{{tag>software application dbadmin elasticsearch tutoriel}}
====== 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 'https://host:port/path?query' -d ''
Où est la méthode ou verbe HTTP (GET,POST,PUT,HEAD,DELETE) et un corps encodé en JSON si nécessaire.
===== A propos de l'architecture =====
Quelques mots sur l'architecture d'elasticsearch:
* Une instance du serveur de base de données elasticsearch en cours d’exécution est désignée nœud.
* Plusieurs noeuds forment un cluster, c'est ce fonctionnement en cluster qui permet de garantir la haute disponibilité en répartissant automatiquement les données entre les nœuds.
===== 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:
* **took**: le nombre de millisecondes nécessaires pour exécuter la requête.
* **max_score** le score du plus
* **hits.total.value**: nombre total de documents correspondant aux critères.
===== Références =====
* https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-index.html