...
- Tous les objets doivent être dans un index unique.
- par Par convention, le type de l'objet (ou document) doit se trouver dans l'attribut "_type". Il doit prendre les valeurs suivantes :
- CMP quand l'objet est de type composante.
- ELP quand l'objet est de type élément pédagogique.
- VET quand l'objet est de type version d'étape.
- ETU quand l'objet est de type étudiant.
- Les documents doivent également posséder :
- un attribut correspondant au libellé
- un attribut correspondant au code
- un attribut correspondant à la version
- un attribut qui va servir pour la recherche rapide :
- Il peut s'agir simplement de l'attribut libellé ou encore d'un attribut concaténant le code et le libellé de l'objet. Pour exemple, à l'Université de Lorraine nous avons un attribut formaté comme suit : [CODE] LIBELLE
2.5.1 Exemple
Voici un exemple de l'index utilisé à l'Université de Lorraine :
Pour construire cet index nous utilisons une "river", qui permet de créer un index à partir d'une requête SQL.
Exemple de création de river permettant de récupérer les composantes, VET, ELP, et étudiants valides sur n et n-1:
Bloc de code |
---|
PUT _river/my_jdbc_river/_meta
{
"type": "jdbc",
"jdbc" : {
"url" : "jdbc:oracle:thin:@apogee.univ.fr:1521:APOGEE",
"user" : "userApogee",
"password" :"userPwd",
"sql": "SELECT 'CMP' || cod_cmp || '0' \"_id\", 'CMP' \"_type\", cod_cmp COD_OBJ, 0 COD_VRS_OBJ, '[' || cod_cmp || '] ' || lib_cmp LIB_DESC_OBJ, lib_cmp LIB_OBJ FROM composante UNION SELECT DISTINCT 'VDI' || vdi.cod_dip || vdi.cod_vrs_vdi \"_id\", 'VDI' \"_type\", vdi.cod_dip COD_OBJ, vdi.cod_vrs_vdi COD_VRS_OBJ, '[' || vdi.cod_dip || '/' || vdi.cod_vrs_vdi || '] ' || vdi.lib_web_vdi LIB_DESC_OBJ, vdi.lib_web_vdi LIB_OBJ FROM version_diplome vdi, diplome d, VDI_FRACTIONNER_VET vfv WHERE vdi.cod_dip = d.cod_dip and vfv.COD_DIP=d.cod_dip and vfv.COD_VRS_VDI=vdi.COD_VRS_VDI and vfv.DAA_FIN_RCT_VET > (select cod_anu - 2 from annee_uni where eta_anu_iae = 'O') UNION SELECT DISTINCT 'VET' || vet.cod_etp || vet.cod_vrs_vet \"_id\", 'VET' \"_type\", vet.cod_etp COD_OBJ, vet.cod_vrs_vet COD_VRS_OBJ, '[' || vet.cod_etp || '/' || vet.cod_vrs_vet || '] ' || vet.lib_web_vet LIB_DESC_OBJ, vet.lib_web_vet LIB_OBJ FROM version_etape vet, etape e, VDI_FRACTIONNER_VET vfv WHERE vet.cod_etp = e.cod_etp and vfv.COD_ETP=e.cod_etp and vfv.COD_VRS_VET=vet.COD_VRS_VET and vfv.DAA_FIN_RCT_VET > (select cod_anu - 2 from annee_uni where eta_anu_iae = 'O') UNION SELECT 'ELP' || cod_elp || '0' \"_id\",'ELP' \"_type\", cod_elp COD_OBJ, 0 COD_VRS_OBJ,'[' || cod_elp || '] ' || lib_elp LIB_DESC_OBJ, lib_elp LIB_OBJ FROM element_pedagogi e UNION select 'ETU' || IND.COD_ETU || '' \"_id\", 'ETU' \"_type\",CAST(IND.COD_ETU as VARCHAR2(40)) COD_OBJ, 0 COD_VRS_OBJ, '[' || IND.COD_ETU || '] ' || IND.LIB_PR1_IND || ' ' || NVL(IND.LIB_NOM_USU_IND,IND.LIB_NOM_PAT_IND) LIB_DESC_OBJ, IND.LIB_PR1_IND || ' ' || NVL(IND.LIB_NOM_USU_IND,IND.LIB_NOM_PAT_IND) LIB_OBJ from individu ind, INS_ADM_ANU iaa where IAA.COD_IND=ind.COD_IND and IND.COD_ETU is not null and IAA.COD_ANU > (select cod_anu - 2 from annee_uni where eta_anu_iae = 'O')",
"index" : "apogee"
}
} |
A noter que les "river" peuvent être automatisées pour mettre à jour l'index régulièremen. Exemple :
Bloc de code |
---|
PUT _river/my_jdbc_river/_meta
{
"type": "jdbc",
"jdbc" : {
"url" : "jdbc:oracle:thin:@apogee.univ.fr:1521:APOGEE",
"user" : "userApogee",
"password" :"userPwd",
"schedule": "0 0/15 5-23 * * ?",
"sql": "REQUETE SQL SUR MESURE",
"index" : "apogee"
}
}
|