README.md 4.02 KB
Newer Older
Julien Bouquillon's avatar
Julien Bouquillon committed
1
# recherche-entreprises
Remi Mélisson's avatar
Remi Mélisson committed
2

Julien Bouquillon's avatar
Julien Bouquillon committed
3
Ce projet permet de générer un index Elastic Search qui regroupe toutes les informations utiles pour rechercher une entreprise par établissement, raison sociale, code postal, ville, siret/siren, effectif, convention collective...
Remi Mélisson's avatar
Remi Mélisson committed
4

5
Les données sont issues de [plusieurs jeux de données data.gouv.fr](./assembly/scripts/get-data.sh) et de [kali-data](https://github.com/SocialGouv/kali-data).
Julien Bouquillon's avatar
Julien Bouquillon committed
6

7
Le dossier [`api`](./api) présente un exemple d'implémentation d'API NodeJS qui exploite cet index Elastic Search avec différentes requêtes.
Julien Bouquillon's avatar
Julien Bouquillon committed
8

9
Un frontend de démo est disponible ici : https://p8dyl.csb.app/
Remi Mélisson's avatar
Remi Mélisson committed
10

Julien Bouquillon's avatar
Julien Bouquillon committed
11 12 13
Et vous pouvez utiliser librement l'API disponible sur https://api-recherche-entreprises.fabrique.social.gouv.fr cf [doc API](./api/README.md)

Exemple : [/api/v1/search?q=plume&a=paris](https://api-recherche-entreprises.fabrique.social.gouv.fr/api/v1/search?q=plume&a=paris)
Julien Bouquillon's avatar
Julien Bouquillon committed
14

15
## Étapes :
Remi Mélisson's avatar
ci wip  
Remi Mélisson committed
16

17
![](https://mermaid.ink/svg/eyJjb2RlIjoiZ3JhcGggTFJcblxuU3RvY2tVbml0ZUxlZ2FsZS5jc3YtLT5QeUFzc2VtYmx5wqBcbmdlb19zaXJldC5jc3YtLT5QeUFzc2VtYmx5wqBcbnNpcmV0MmlkY2MuY3N2LS0-UHlBc3NlbWJsecKgXG5QeUFzc2VtYmx5LS0-YXNzZW1ibHkuY3N2LS0-aW5kZXgtLT5FbGFzdGljU2VhcmNoLS0-QVBJW0FQSSBIVFRQMV1cbkVsYXN0aWNTZWFyY2gtLT5BUEkyW0FQSSBIVFRQMl1cbkVsYXN0aWNTZWFyY2gtLT5DbGllbnRbQ2xpZW50IEVTXSIsIm1lcm1haWQiOnt9LCJ1cGRhdGVFZGl0b3IiOmZhbHNlfQ)
Remi Mélisson's avatar
ok  
Remi Mélisson committed
18

Julien Bouquillon's avatar
Julien Bouquillon committed
19 20 21 22 23 24 25 26 27 28
## Données :

| Dataset                                                                                                                                                                        | usage                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------- |
| [geo-sirene](https://www.data.gouv.fr/fr/datasets/base-sirene-des-entreprises-et-de-leurs-etablissements-siren-siret/#resource-community-c6006b4d-0b4b-4504-a762-1efe69c7ed18) | Version géocodée du stock des établiseement              |
| [insee-sirene](https://www.data.gouv.fr/fr/datasets/base-sirene-des-entreprises-et-de-leurs-etablissements-siren-siret/)                                                       | Base Sirene des entreprises et de leurs établissements   |
| [siret2idcc](https://www.data.gouv.fr/fr/datasets/liste-des-conventions-collectives-par-entreprise-siret/#_)                                                                   | Lien vers la convention collective                       |
| [kali-data](https://github.com/SocialGouv/kali-data)                                                                                                                           | Informations sur les conventions collectives             |
| [codes-naf](https://github.com/SocialGouv/codes-naf)                                                                                                                           | Liste des codes NAF (Nomenclature d’activités française) |

29 30 31 32 33
## Assemblage

Le CSV est généré en deux étapes dans le dossier `assembly/` :

- Téléchargement des datasets (8GB)
Remi Mélisson's avatar
ok  
Remi Mélisson committed
34

Julien Bouquillon's avatar
Julien Bouquillon committed
35
  `DATA_DIR=./data/ scripts/get-data.sh`
Remi Mélisson's avatar
ok  
Remi Mélisson committed
36

37
- Assemblage des fichiers avec Python (numpy & pandas)
Remi Mélisson's avatar
ok  
Remi Mélisson committed
38 39 40

  `pip install -r requirements.txt`

Julien Bouquillon's avatar
Julien Bouquillon committed
41
  `DATA_DIR=./data/ OUTPUT_DIR=./output scripts/assemble.sh`
Remi Mélisson's avatar
ci wip  
Remi Mélisson committed
42

Julien Bouquillon's avatar
Julien Bouquillon committed
43
Au final, le fichier `./output/assembly.csv` fait environ 600Mo
44 45

## Indexation Elastic Search
Remi Mélisson's avatar
ci wip  
Remi Mélisson committed
46

47 48 49 50 51 52 53
Le dossier `index/` contient les scripts qui injectent le fichier `assembly.csv` dans un index `recherche-entreprises` ElasticSearch.

La mise à jour exploite la fonctionnalité [alias](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/indices-aliases.html) d'ElasticSearch pour éviter les downtimes.

Le script `scripts/create-es-keys.sh` permet de créer des token pour lire/écrire sur ces index.

Pour lancer une indexation :
Remi Mélisson's avatar
ok  
Remi Mélisson committed
54

Julien Bouquillon's avatar
Julien Bouquillon committed
55 56
```sh
yarn install
Remi Mélisson's avatar
ok  
Remi Mélisson committed
57

Julien Bouquillon's avatar
Julien Bouquillon committed
58
ELASTICSEARCH_URL=https://elastic_url:9200 ELASTICSEARCH_API_KEY=key_with_writing_rights ASSEMBLY_FILE=./output/assembly.csv yarn start
Julien Bouquillon's avatar
Julien Bouquillon committed
59
```
Julien Bouquillon's avatar
Julien Bouquillon committed
60 61

The default `ELASTICSEARCH_INDEX_NAME` is `recherche-entreprises`