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
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).
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]
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) |
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
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
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.
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.
Des workflows GitHub permettent de mettre à jour les index et sont lancés manuellement
- Annuaire-entreprises : https://annuaire-entreprises.data.gouv.fr
- API Entreprise : https://entreprise.api.gouv.fr/catalogue/