Skip to content

SocialGouv/recherche-entreprises

Repository files navigation

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


⚠️ LA DINUM propose une autre API similaire, officielle et disponible à cette adresse : https://api.gouv.fr/les-api/api-recherche-entreprises


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]
Loading

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