JDONREFv4 Plugin BeginnersMode : Différence entre versions

De JDONREF Wiki
(Prérequis)
(Prérequis)
 
(17 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
 
Cette page est en cours de rédaction
 
 
 
 
Cette page est destinée aux personnes qui souhaitent installer JDONREF mais qui ne disposent pas de compétences sur ElasticSearch.
 
Cette page est destinée aux personnes qui souhaitent installer JDONREF mais qui ne disposent pas de compétences sur ElasticSearch.
 
Les utilisateurs aguerris de ElasticSearch préféreront [[JDONREFv4_plugin_GettingStarted|cette page]].
 
Les utilisateurs aguerris de ElasticSearch préféreront [[JDONREFv4_plugin_GettingStarted|cette page]].
Ligne 14 : Ligne 9 :
 
** deux coeurs
 
** deux coeurs
 
** 8 à 64 Go de RAM (pas plus par machine)
 
** 8 à 64 Go de RAM (pas plus par machine)
** 100 Go DD pour indexer la France entière (éventuellement réparti sur vos différentes machines)
+
** 20 Go DD pour indexer la France entière (éventuellement réparti sur vos différentes machines)
 
* installer java (7 de [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_java_virtual_machine.html préférence]).
 
* installer java (7 de [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_java_virtual_machine.html préférence]).
 
* installer [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch]
 
* installer [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch]
* paramétrer correctement l'usage de la [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/heap-sizing.html#heap-sizing mémoire]. Le tas (heap) ElasticSearch doit représenter 50% de votre RAM. Par défaut, vous serez restreint à 1 Go de RAM, ce qui reste toutefois valable pour de simples tests (mais dommage si vous en avez 8 Go ou plus !). Il y a plusieurs moyens de procéder. Le plus simple est de définir la variable ES_MAX_HEAP à la moitié de la RAM de votre noeud, mais vous devrez le faire à chaque redémarrage ('export ES_MAX_HEAP=4G' si vous disposez de 8 Go de RAM).
+
* paramétrer correctement l'usage de la [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/heap-sizing.html#heap-sizing mémoire]. Le tas (heap) ElasticSearch doit représenter 50% de votre RAM. Par défaut, vous serez restreint à 1 Go de RAM, ce qui reste toutefois valable pour de simples tests (mais dommage si vous en avez 8 Go ou plus !). Il y a plusieurs moyens de procéder. Le plus simple est de définir la variable ES_HEAP_SIZE à la moitié de la RAM de votre noeud, mais vous devrez le faire à chaque redémarrage ('export ES_HEAP_SIZE=4G' si vous disposez de 8 Go de RAM).
   
   
Ligne 27 : Ligne 22 :
   
 
cd /usr/share/elasticsearch
 
cd /usr/share/elasticsearch
bin/plugin --install elasticsearch-jdonrefv4-0.2 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.2.zip?format=raw
+
bin/plugin --install elasticsearch-jdonrefv4-0.5 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.5.zip?format=raw
   
 
puis sur l'une d'elles :
 
puis sur l'une d'elles :
   
curl -XPUT 'http://localhost:9200/jdonref/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.2/jdonref-settings.json
+
curl -XPUT 'http://localhost:9200/poizon/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.2/mapping-poizon.json
+
curl -XPUT 'http://localhost:9200/poizon/poizon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-poizon.json
curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.2/mapping-adresse.json
+
curl -XPUT 'http://localhost:9200/adresse/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.2/mapping-voie.json
+
curl -XPUT 'http://localhost:9200/adresse/adresse/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-adresse-beginner.json
curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.2/mapping-troncon.json
+
curl -XPUT 'http://localhost:9200/voie/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.2/mapping-commune.json
+
curl -XPUT 'http://localhost:9200/voie/voie/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-voie-beginner.json
curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.2/mapping-departement.json
+
curl -XPUT 'http://localhost:9200/troncon/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.2/mapping-pays.json
+
curl -XPUT 'http://localhost:9200/troncon/troncon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-troncon.json
  +
curl -XPUT 'http://localhost:9200/commune/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
  +
curl -XPUT 'http://localhost:9200/commune/commune/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-commune.json
  +
curl -XPUT 'http://localhost:9200/departement/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
  +
curl -XPUT 'http://localhost:9200/departement/departement/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-departement.json
  +
curl -XPUT 'http://localhost:9200/pays/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
  +
curl -XPUT 'http://localhost:9200/pays/pays/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-pays.json
   
 
==== Tests ====
 
==== Tests ====
   
curl -s -XPOST 'http://localhost:9200/_bulk' --data-binary @/usr/share/elasticsearch/plugins/jdonrefv4-0.2/simplebulksample.json
 
  +
  +
Il est ensuite possible d'indexer du contenu, comme une commune :
  +
  +
curl -XPUT 'http://localhost:9200/jdonref/commune/1' -d '{
  +
"code_insee" : "75056",
  +
"code_departement" : "75",
  +
"code_pays" : "1",
  +
"commune" : "PARIS",
  +
"code_postal" : "75000",
  +
"ligne7" : "FRANCE",
  +
"type" : "commune",
  +
"t0" : "22/03/2014",
  +
"geometrie" : {
  +
"type": "multipolygon",
  +
"coordinates" : [
  +
[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],
  +
[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],
  +
[[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]
  +
]
  +
}
  +
}'
  +
  +
ou une voie :
  +
  +
curl -XPUT 'http://localhost:9200/jdonref/voie/1' -d '{
  +
"numero_min": "1",
  +
"numero_max": "192",
  +
"type_de_voie": "BOULEVARD",
  +
"article": "DE",
  +
"voie": "HOPITAL",
  +
"code_insee_commune" : "75056",
  +
"code_postal" : "75013",
  +
"code_insee": "75113",
  +
"code_departement" : "75",
  +
"code_pays" : "FR1",
  +
"commune" : "PARIS",
  +
"ligne4" : "BOULEVARD DE L HOPITAL",
  +
"ligne6" : "75013 PARIS",
  +
"ligne7" : "FRANCE",
  +
"type": "voie",
  +
"t0" : "22/03/2014",
  +
"geometrie" : {
  +
"type": "multipolygon",
  +
"coordinates" : [
  +
[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],
  +
[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],
  +
[[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]
  +
]
  +
}
  +
}'
  +
  +
puis de tenter de les rechercher :
  +
  +
curl -XGET 'http://localhost:9200/jdonref/_search' -d '{"query":{"jdonrefv4":{"value":"BOULEVARD HOPITAL"}}}'
  +
  +
ou via l'url de test 'http://localhost:9200/_plugin/jdonrefv4-0.5/JDONREFv4Test.html'
  +
  +
  +
  +
Vous pouvez aussi indexer des données en masse :
  +
  +
Le fichier simplebulksample.json n'est pas encore disponible, les données de l'IGN sont en opendata, mais je n'ai pas pris le temps d'effectuer ce traitement.
  +
  +
 
curl -s -XPOST 'http://localhost:9200/_bulk' --data-binary @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/simplebulksample.json
 
curl -XGET 'http://localhost:9200/jdonref/_search' -d '{"query":{"jdonrefv4":{"value":"24 BOULEVARD HOPITAL"}}}'
 
curl -XGET 'http://localhost:9200/jdonref/_search' -d '{"query":{"jdonrefv4":{"value":"24 BOULEVARD HOPITAL"}}}'
   
Ligne 54 : Ligne 113 :
 
puis réindexez votre propre fichier.
 
puis réindexez votre propre fichier.
 
Il n'y a pas de règle sur le poids d'un fichier bulk, mais son nombre de lignes est directement lié aux performances. Il s'agit simplement de faire quelques tests.
 
Il n'y a pas de règle sur le poids d'un fichier bulk, mais son nombre de lignes est directement lié aux performances. Il s'agit simplement de faire quelques tests.
  +
Vous pouvez suivre la [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html documentation de ElasticSearch].
   
   
Ligne 71 : Ligne 131 :
 
}
 
}
 
}'
 
}'
  +
  +
Pour en savoir plus, vous pouvez lire [[JDONREFv4_Query|cette page]] et [[JDONREFv4_Mappings|celle ci]].
   
 
==== Passage en production ====
 
==== Passage en production ====
   
Si vous passez suffisamment de temps sur ce plugin, après quelques tests poussés vous constaterez que cette configuration ne convient pas exactement pour un usage en production.
+
Si vous passez suffisamment de temps sur ce plugin, après quelques tests poussés vous constaterez que cette configuration ne convient pas tout à fait pour un usage en production.
 
Quelques optimisations sont nécessaires. Elles sont abordées dans la section [[JDONREFv4_plugin_GettingStarted|avancée]].
 
Quelques optimisations sont nécessaires. Elles sont abordées dans la section [[JDONREFv4_plugin_GettingStarted|avancée]].

Version actuelle en date du 27 février 2016 à 00:10

Cette page est destinée aux personnes qui souhaitent installer JDONREF mais qui ne disposent pas de compétences sur ElasticSearch. Les utilisateurs aguerris de ElasticSearch préféreront cette page.

Des compétences d'administration système sont tout de même nécessaires pour certaines opérations.

Prérequis

  • une ou plusieurs machines (virtuelles) sur le même réseau avec un minimum de :
    • deux coeurs
    • 8 à 64 Go de RAM (pas plus par machine)
    • 20 Go DD pour indexer la France entière (éventuellement réparti sur vos différentes machines)
  • installer java (7 de préférence).
  • installer elasticsearch
  • paramétrer correctement l'usage de la mémoire. Le tas (heap) ElasticSearch doit représenter 50% de votre RAM. Par défaut, vous serez restreint à 1 Go de RAM, ce qui reste toutefois valable pour de simples tests (mais dommage si vous en avez 8 Go ou plus !). Il y a plusieurs moyens de procéder. Le plus simple est de définir la variable ES_HEAP_SIZE à la moitié de la RAM de votre noeud, mais vous devrez le faire à chaque redémarrage ('export ES_HEAP_SIZE=4G' si vous disposez de 8 Go de RAM).


Si vous ne vous en sortez pas, vous nécessitez sans doute un administrateur système. Inutile d'aller plus loin.

Installation

Sur chacune de vos machines :

 cd /usr/share/elasticsearch
 bin/plugin --install elasticsearch-jdonrefv4-0.5 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.5.zip?format=raw 

puis sur l'une d'elles :

 curl -XPUT 'http://localhost:9200/poizon/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
 curl -XPUT 'http://localhost:9200/poizon/poizon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-poizon.json
 curl -XPUT 'http://localhost:9200/adresse/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
 curl -XPUT 'http://localhost:9200/adresse/adresse/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-adresse-beginner.json
 curl -XPUT 'http://localhost:9200/voie/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
 curl -XPUT 'http://localhost:9200/voie/voie/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-voie-beginner.json
 curl -XPUT 'http://localhost:9200/troncon/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
 curl -XPUT 'http://localhost:9200/troncon/troncon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-troncon.json
 curl -XPUT 'http://localhost:9200/commune/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
 curl -XPUT 'http://localhost:9200/commune/commune/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-commune.json
 curl -XPUT 'http://localhost:9200/departement/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
 curl -XPUT 'http://localhost:9200/departement/departement/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-departement.json
 curl -XPUT 'http://localhost:9200/pays/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json
 curl -XPUT 'http://localhost:9200/pays/pays/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-pays.json

Tests

Il est ensuite possible d'indexer du contenu, comme une commune :

 curl -XPUT 'http://localhost:9200/jdonref/commune/1' -d '{
   "code_insee" : "75056",
   "code_departement" : "75",
   "code_pays" : "1",
   "commune" : "PARIS",
   "code_postal" : "75000",
   "ligne7" : "FRANCE",
   "type" : "commune",
   "t0" : "22/03/2014",
   "geometrie" : {
       "type": "multipolygon",
       "coordinates" : [
          [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],
          [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],
          [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]
       ]
   }
 }'

ou une voie :

 curl -XPUT 'http://localhost:9200/jdonref/voie/1' -d '{
   "numero_min": "1",
   "numero_max": "192",
   "type_de_voie": "BOULEVARD",
   "article": "DE",
   "voie": "HOPITAL",
   "code_insee_commune" : "75056",
   "code_postal" : "75013",
   "code_insee": "75113",
   "code_departement" : "75",
   "code_pays" : "FR1",
   "commune" : "PARIS",
   "ligne4" : "BOULEVARD DE L HOPITAL",
   "ligne6" : "75013 PARIS",
   "ligne7" : "FRANCE",
   "type": "voie",
   "t0" : "22/03/2014",
   "geometrie" : {
       "type": "multipolygon",
       "coordinates" : [
          [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],
          [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],
          [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]
       ]
   }
 }'

puis de tenter de les rechercher :

 curl -XGET 'http://localhost:9200/jdonref/_search' -d '{"query":{"jdonrefv4":{"value":"BOULEVARD HOPITAL"}}}'

ou via l'url de test 'http://localhost:9200/_plugin/jdonrefv4-0.5/JDONREFv4Test.html'


Vous pouvez aussi indexer des données en masse :

 Le fichier simplebulksample.json n'est pas encore disponible, les données de l'IGN sont en opendata, mais je n'ai pas pris le temps d'effectuer ce traitement.


 curl -s -XPOST 'http://localhost:9200/_bulk' --data-binary @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/simplebulksample.json
 curl -XGET 'http://localhost:9200/jdonref/_search' -d '{"query":{"jdonrefv4":{"value":"24 BOULEVARD HOPITAL"}}}'

Amusez-vous

A ce stade, vous pouvez indexer ce qu'il vous plaît, en remplaçant le fichier simplebulksample.json par exemple ! Commencez par vider l'index :

 curl -XDELETE 'http://localhost:9200/jdonref/_query' -d '{"query":{"match_all":{}}}'

puis réindexez votre propre fichier. Il n'y a pas de règle sur le poids d'un fichier bulk, mais son nombre de lignes est directement lié aux performances. Il s'agit simplement de faire quelques tests. Vous pouvez suivre la documentation de ElasticSearch.


Toutes les autres requêtes de ElasticSearch peuvent être combinées avec celle de JDONREF. Vous pouvez par exemple filtrer votre requête sur un département :

 curl -XGET 'http://localhost:9200/jdonref/_search' -d '{
  "filtered" : {
    "query": {
      "jdonrefv4" : {
        "value" : "24 BOULEVARD DE L HOPITAL 75 PARIS"
      }
    },
    "filter": {
      "term" : { "code_departement" : "75" }
    }
  }
 }'

Pour en savoir plus, vous pouvez lire cette page et celle ci.

Passage en production

Si vous passez suffisamment de temps sur ce plugin, après quelques tests poussés vous constaterez que cette configuration ne convient pas tout à fait pour un usage en production. Quelques optimisations sont nécessaires. Elles sont abordées dans la section avancée.