JDONREFv4 Mappings
JDONREFv3ES introduit différents mapping permettant de gérer des adresses.
C'est l'adresse qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).
Ils sont fournis dans le plugin sous la forme de fichiers json.
Sommaire
Quelques informations importante à lire avant de commencer
Les mappings qui suivent disposent de quelques particularités à connaître pour leur bonne lecture.
- JDONREFv3ES se sert des champs stockés (store:true). Il est important de respecter le nom de ces champs si la requête est utilisée. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables.
- Le champ 'type' est nécessaire pour le bon usage de la requête, plus précisément, il doit valoir 'adresse' pour les éléments du type adresse (jusqu'à ce que je sache comment faire autrement). Il permet de traiter correctement les numéros d'adresse. Pour le moment, cela signifie aussi que les noms des mappings peuvent ne pas être respectés ...
- Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ...
- La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source. Cela permet d'alléger le poids de l'index.
- Les champs qui sont marqués "index":"not_analyzed" peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analyses). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme "ligne4", la distinction ne peux pas ici être réalisée.
- Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ...
Le mapping poizon
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique). Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone). Le type geo_shape est alors employé pour leur géométrie commune. Son mapping est défini de la manière suivante :
$ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{ "poizon": { "path" : "just_name", "properties" : { "poizon_id" : { "type" : "string", "index":"not_analyzed"}, "adr_id" : { "type" : "string", "index":"not_analyzed"}, "tro_id" : { "type" : "string", "index":"not_analyzed"}, "voi_id" : { "type" : "string", "index":"not_analyzed"}, "code_insee" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_insee_commune" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_departement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_pays" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "codes" : { "type" : "string", "store": true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "numero" : { "type" : "integer", "index":"not_analyzed"}, "repetition" : { "type" : "string", "index":"not_analyzed"}, "type_de_voie" : { "type" : "string", "index":"not_analyzed"}, "article" : { "type" : "string", "index":"not_analyzed"}, "libelle" : { "type" : "string", "index":"not_analyzed"}, "commune" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "code_arrondissement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_postal" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "pays" : { "type" : "string" , "index": "no"}, "t0" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "t1" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "poizon_service" : { "type" : "integer", "index":"not_analyzed"}, "ligne1" : { "type" : "string", "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "ligne2" : { "type" : "string", "index":"no"}, "ligne3" : { "type" : "string", "index":"no"}, "ligne4" : { "type" : "string", "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "ligne5" : { "type" : "string", "index":"no"}, "ligne6" : { "type" : "string", "index": "no"}, "ligne7" : { "type" : "string", "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "type" : { "type" : "string", "store":true, "index":"not_analyzed"}, "geometrie" : { "type" : "geo_shape", "precision": "1cm", "tree": "quadtree"}, "fullName" : {"type": "string", "store":true, "index": "no"} } } }'
Le mapping adresse
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :
$ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{ "adresse": { "path" : "just_name", "properties" : { "adr_id" : { "type" : "string", "index":"not_analyzed"}, "tro_id" : { "type" : "string", "index":"not_analyzed"}, "voi_id" : { "type" : "string", "index":"not_analyzed"}, "code_insee" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_insee_commune" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_departement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_pays" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "codes" : { "type" : "string", "store": true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "numero" : { "type" : "integer", "index":"not_analyzed"}, "repetition" : { "type" : "string", "index":"not_analyzed"}, "type_de_voie" : { "type" : "string", "index":"not_analyzed"}, "article" : { "type" : "string", "index":"not_analyzed"}, "libelle" : { "type" : "string", "index":"not_analyzed"}, "commune" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "code_arrondissement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_postal" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "pays" : { "type" : "string" , "index": "no"}, "t0" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "t1" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "ligne2" : { "type" : "string", "index":"no"}, "ligne3" : { "type" : "string", "index":"no"}, "ligne4" : { "type" : "string", "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "ligne5" : { "type" : "string", "index":"no"}, "ligne6" : { "type" : "string", "index": "no"}, "ligne7" : { "type" : "string", "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "type" : { "type" : "string", "store":true, "index":"not_analyzed"}, "geometrie" : { "type" : "geo_shape", "precision": "1cm", "tree": "quadtree"}, "fullName" : {"type": "string", "store":true, "index": "no"} } } }'
Le mapping troncon
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring. Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés). Il n'est pas utilisé par la requête mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage. Son mapping est défini de la manière suivante :
$ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{ "troncon": { "properties" : { "tro_id" : { "type" : "string", "index":"not_analyzed"}, "voi_id" : { "type" : "string", "index":"not_analyzed"}, "code_insee" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_insee_commune" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_departement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_pays" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "codes" : { "type" : "string", "store": true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "numero_debut" : { "type" : "integer", "index":"not_analyzed"}, "numero_fin" : { "type" : "integer", "index":"not_analyzed"}, "repetition_debut" : { "type" : "string", "index":"not_analyzed"}, "repetition_fin" : { "type" : "string", "index":"not_analyzed"}, "type_de_voie" : { "type" : "string", "index":"not_analyzed"}, "article" : { "type" : "string", "index":"not_analyzed"}, "libelle" : { "type" : "string", "index":"not_analyzed"}, "commune" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "code_arrondissement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_postal" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "pays" : { "type" : "string" , "index": "no"}, "t0" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "t1" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "ligne4" : { "type" : "string", "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "ligne5" : { "type" : "string", "index":"no"}, "ligne6" : { "type" : "string", "index": "no"}, "ligne7" : { "type" : "string", "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "type" : { "type" : "string", "store":true, "index":"not_analyzed"}, "geometrie" : { "type" : "geo_shape", "precision": "1cm", "tree": "quadtree"}, "fullName" : {"type": "string", "store": true, "index": "no"} } } }'
Le mapping voie
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch). Elle dispose d'un numéro de début et de fin. Son mapping est défini de la manière suivante :
$ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{ "voie": { "properties" : { "voi_id" : { "type" : "string", "index":"not_analyzed"}, "code_insee" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_insee_commune" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_departement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_pays" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "codes" : { "type" : "string", "store": true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "numero_min" : { "type" : "integer", "index":"not_analyzed"}, "numero_max" : { "type" : "integer", "index":"not_analyzed"}, "type_de_voie" : { "type" : "string", "index":"not_analyzed"}, "article" : { "type" : "string", "index":"not_analyzed"}, "libelle" : { "type" : "string", "index":"not_analyzed"}, "commune" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "code_arrondissement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_postal" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "pays" : { "type" : "string" , "index": "no"}, "t0" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "t1" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "ligne4" : { "type" : "string", "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "ligne5" : { "type" : "string", "index":"no"}, "ligne6" : { "type" : "string", "index": "no"}, "ligne7" : { "type" : "string", "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "type" : { "type" : "string", "store":true, "index":"not_analyzed"}, "geometrie" : { "type" : "geo_shape", "precision": "1cm", "tree": "quadtree"}, "fullName" : {"type": "string", "store": true, "index": "no"} } } }'
Le mapping commune
Le mapping commune a pour géométrie un multipolygon, sans extrusion. Son mapping est défini de la manière suivante :
$ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{ "commune": { "properties" : { "code_insee" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_departement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_insee_commune" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_pays" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "commune" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "code_arrondissement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_postal" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "codes" : { "type" : "string", "store": true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "pays" : { "type" : "string" , "index": "no"}, "t0" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "t1" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "ligne5" : { "type" : "string", "index":"no"}, "ligne6" : { "type" : "string", "index": "no"}, "ligne7" : { "type" : "string", "store": true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "type" : { "type" : "string", "store" : true, "index":"not_analyzed"}, "geometrie" : { "type" : "geo_shape", "precision": "1cm", "tree": "quadtree"}, "fullName" : {"type": "string", "store": true, "index": "no"} } } }'
Le mapping departement
Le mapping commune a pour géométrie un multipolygon, sans extrusion. Son mapping est défini de la manière suivante :
$ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{ "departement": { "properties" : { "code_departement" : { "type" : "string", "index":"not_analyzed", "copy_to": "codes"}, "code_pays" : { "type" : "string" , "store" : true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "codes" : { "type" : "string", "store": true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "pays" : { "type" : "string" , "index": "no"}, "t0" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "t1" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "ligne6" : { "type" : "string", "store": true, "index": "no"}, "ligne7" : { "type" : "string", "store": true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "type" : { "type" : "string", "store" : true, "index":"not_analyzed"}, "geometrie" : { "type" : "geo_shape", "precision": "1cm", "tree": "quadtree"}, "fullName" : {"type": "string", "store": true, "index": "no"} } } }'
Le mapping pays
Le mapping pays a pour géométrie un multipolygon, sans extrusion. Son mapping est défini de la manière suivante :
$ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{ "pays": { "properties" : { "code_pays" : { "type" : "string" , "store":true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_codes_index","search_analyzer":"jdonrefv3es_search"}, "pays" : { "type" : "string" , "index": "no"}, "t0" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "t1" : { "type" : "date", "format": "YYYY-MM-dd HH:mm:ss", "index":"not_analyzed"}, "ligne7" : { "type" : "string", "store": true, "term_vector" : "with_positions_offsets", "index_analyzer":"jdonrefv3es_index","search_analyzer":"jdonrefv3es_search"}, "type" : { "type" : "string", "store" : true, "index":"not_analyzed"}, "geometrie" : { "type" : "geo_shape", "precision": "1cm", "tree": "quadtree"}, "fullName" : {"type": "string", "store": true, "index": "no"} } } }'