Indexation
Fondamental : Méthode HTTP
Deux types de méthodes HTTP permettent l'indexation de documents : PUT et POST.
PUT permet de choisir manuellement l'ID de l'enregistrement
POST laisse l'ID être créé automatiquement
Exemple : Indexation avec POST
POST http://localhost:9200/biblio/livres
{
"titre":"Shining",
"auteur":"Stephen King",
"genre":"fantastique",
"date_parution":"27/01/1977"
}
Exemple : Indexation avec PUT
PUT http://localhost:9200/biblio/livres/1
{
"titre":"Shining",
"auteur":"Stephen King",
"genre":"fantastique",
"date_parution":"27/01/1977"
}
Remarque : Réponse de l'API
HTTP 200 : Document modifié
HTTP 201 : Document créé
HTTP 409 : Document déjà existant dans le cas d'une opération de création
{
"_index": "biblio",
"_type": "livres",
"_id": "1",
"_version": 1,
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
Remarque : Version d'un document
Un numéro de version est assigné à la création d'un document. Ce numéro de version est incrémenté pour chaque opération de ré-indexation, modification ou suppression.
Définition : Type de données
string, integer, long, float, double, boolean, datetime, binary
Array, Object, geo_point, geo_shape, ip
Par défaut Elasticsearch va analyser les champs non connu lors d'une insertion pour mapper le type le plus adapté, entre long et string. Si l'on souhaite spécifier le type de donnée de chaque champ d'un document, il faut le faire avant toute insertion de document, il est impossible de changer dynamiquement le type des champs. Cela permet d'utiliser des types complexe comme geo_point, ou de définir une imbrication d'objet.
Ce mapping s'effectue avec une requête de type PUT, et crée un nouveau type. Le corps de la requête doit contenir les informations permettant de définir les champs du type.
PUT http://localhost:9200/biblio
{
"mappings": {
"livre": {
"properties": {
"titre": { "type": "string" },
"auteur": {
"properties": {
"nom": { "type": "string" },
"prenom": { "type": "string" },
"adresse": { "type": "geo_point" }
}
},
"pages": { "type": "long" },
"resume": { "type": "string" }
}}}}
Fondamental : Modification d'un document
Même méthodes que pour une création, si le champ donné existe déjà, il est mis à jour, sinon il est ajouté au document.
Attention si le _update n'est pas ajouté, le document est remplacé entièrement (supprimé et créé avec uniquement les champs donnés)
POST http://localhost:9200/biblio/livres/1/_update
{
"doc" : {
"date_parution" : "28/01/1977"
}
}
Fondamental : Suppression de documents
Il est possible de supprimer un ou plusieurs document en changeant spécifiant son ID, ou de supprimer intégralement l'index en ne spécifiant rien.
DELETE http://localhost:9200/biblio/livres/3
DELETE http://localhost:9200/biblio/livres