Elasticsearch - Indexation et recherches simples

Indexation

FondamentalMé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

ExempleIndexation avec POST

1
POST http://localhost:9200/biblio/livres
2
{
3
"titre":"Shining",
4
"auteur":"Stephen King",
5
"genre":"fantastique",
6
"date_parution":"27/01/1977"
7
}

ExempleIndexation avec PUT

1
PUT http://localhost:9200/biblio/livres/1
2
{
3
"titre":"Shining",
4
"auteur":"Stephen King",
5
"genre":"fantastique",
6
"date_parution":"27/01/1977"
7
}

RemarqueRé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

1
{
2
  "_index": "biblio",
3
  "_type": "livres",
4
  "_id": "1",
5
  "_version": 1,
6
  "_shards": {
7
    "total": 2,
8
    "successful": 1,
9
    "failed": 0
10
  },
11
  "created": true
12
}

RemarqueVersion 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éfinitionType 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.

1
PUT http://localhost:9200/biblio
2
{
3
  "mappings": {
4
    "livre": { 
5
      "properties": {  
6
        "titre":     { "type": "string"  }, 
7
        "auteur":    { 
8
        	"properties": {
9
	            "nom":    { "type": "string"  },
10
              "prenom":     { "type": "string"   },
11
	            "adresse": { "type": "geo_point"  }
12
           }
13
        }, 
14
        "pages":     {     "type": "long"      }, 
15
        "resume":     { "type": "string"  }
16
}}}}

FondamentalModification 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)

1
POST http://localhost:9200/biblio/livres/1/_update
2
{
3
  "doc" : {
4
  "date_parution" : "28/01/1977"
5
  }
6
}

FondamentalSuppression 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.

1
DELETE http://localhost:9200/biblio/livres/3
2
DELETE http://localhost:9200/biblio/livres
PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Robin Jolliet, 2016 (Contributions : Stéphane Crozat, les étudiants de l'UTC) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)