recherche-entreprises
API de recherche d'entreprise basée sur ElasticSearch et exploitant les données de la base SIRENE de l'INSEE, de plusieurs jeux de données data.gouv.fr et de kali-data pour les conventions collectives.
Un frontend de démo est disponible ici : https://recherche-entreprises.fabrique.social.gouv.fr
Les données sont mise à jour toutes les semaines
Composants
Le dépôt de code contient plusieurs composants utilisables indépendamment :
composant | description |
---|---|
index | Indexation des jeux de données dans Elastic Search |
api | API NodeJS pour interroger l'index Elastic |
front | Frontend de démo en ReactJS |
L'étape d'indexation peut être automatisée pour maintenir les données à jour en continu (ex: hebdomadaire).
Fonctionnement
graph LR
StockUniteLegale.csv-->SQLite
geo_siren.csv-->SQLite
siret2idcc.csv-->SQLite
SQLite-->assembly.csv
assembly.csv-->index-->ElasticSearch-->API[API HTTP1]
ElasticSearch-->API2[API HTTP2]
ElasticSearch-->Client[Client ES]
Données :
Dataset | usage |
---|---|
geo-sirene | Version géocodée du stock des établiseement |
insee-sirene | Base Sirene des entreprises et de leurs établissements |
siret2idcc | Lien vers la convention collective |
kali-data | Informations sur les conventions collectives |
codes-naf | Liste des codes NAF (Nomenclature d’activités française) |
Développement
Pré-requis
Pour lancer les différentes parties du projet, un certain nombre d'outil doivent être présent sur la machine:
- node
- yarn
- docker et docker-compose
- wget
- sqlite3
Assemblage des données
Le script index/sqlite/build.sh
permet de permet de télécharger les CSV puis aggréger les données pour les re-exporter dans CSV "plat". Le fichier ./data/assembly.csv
généré fait +6Go avec plus de 30 millions de lignes.
Cette opération peut durer ~45 minutes selon votre setup
Indexation dans Elastic Search
Cette étape permet de mettre à jour les données dans l'index Elasticsearch à partir du fichier assembly.csv
généré à l'étape précédente.
La mise à jour exploite la fonctionnalité alias d'Elasticsearch pour éviter les downtimes.
Pour lancer une indexation :
yarn
ELASTICSEARCH_URL=https://elastic_url:9200 ELASTICSEARCH_API_KEY=key_with_writing_rights ASSEMBLY_FILE=./data/assembly.csv yarn start
Le script scripts/create-es-keys.sh
permet de créer des tokens pour lire/écrire sur ces index. Cette étape n'est pas nécessaire pour le développement local.
Lancement de l'API
Cette étape permet de lancer l'API de démo qui va servir les requêtes jusqu'à Elasticsearch.
# En partant de la racine du projet
cd api
yarn install
yarn build
ELASTICSEARCH_URL=http://localhost:9200 yarn start
Le temps d'indexation est d'environ 1h.
Wokflows GitHub
Des workflows GitHub permettent de mettre à jour les index et sont lancés manuellement
Projets relatifs
- Annuaire-entreprises : https://annuaire-entreprises.data.gouv.fr
- API Entreprise : https://entreprise.api.gouv.fr/catalogue/