Salut à tous,
Aujourd’hui je viens vers vous avec une question sur Elasticsearch 8.4 qui concerne les indexes et la définition explicite de leurs mappings.
La doc définit le concept de mapping comme la donnée qui permet d’associer à un document et/ou aux champs qu’il contient leur façon d’être stockés et indexés. Exemples donnés :
Which string fields should be treated as full text fields.
Which fields contain numbers, dates, or geolocations.
The format of date values.
Custom rules to control the mapping for dynamically added fields.
Partant de ces équivalences … :
Elasticsearch(index) = BDD_Relationnelle(BDD)
Elasticsearch(type) = BDD_Relationnelle(table)
Elasticsearch(JSON_document) = BDD_Relationnelle(lignes (+ colonnes) )
… , on pourrait s’attendre à ce que le mapping soit placé sur Elasticsearch(type). Or, depuis Elasticsearch v8, le mapping n’est plus placé sur Elasticsearch(type). A la place, la documentation v8 le définit sur Elasticsearch(index).
Depuis v8, la définition du mapping se fait par exemple comme suit :
curl -X PUT "localhost:9200/my-index-000001?pretty" -H 'Content-Type: application/json' -d'
{
"mappings": {
"properties": {
"age": { "type": "integer" },
"email": { "type": "keyword" },
"name": { "type": "text" }
}
}
}
'
REMARQUE IMPORTANTE : On n’y voit aucunement mention du Elasticsearch(type).
Question
Cela ne pose-t-il pas de problème si, au sein d’un même Elasticsearch(index), on a plusieurs Elasticsearch(types) avec chacun au moins une propriété de document JSON dont l’identificateur (celui de la propriété) serait le même ? D’autant plus que la définition d’un mapping n’indique pas le Elasticsearch(type) auquel appartient la propriété mappée (cf. : la remarque importante au-dessus) !
Merci d’avance et passez une bonne journée !