-
milena-git authoredmilena-git authored
Siretiser les Etablissements Polluants
En mobilisant la technologie ElasticSearch, siretiser les établissements du registre français des émissions polluantes
- Pourquoi Elasticsearch?
- Présentation générale et vocabulaire
- Connexion au moteur Elastic mis en place pour le funathon
- Accéder au code
- Structure du dépôt
1. Pourquoi Elasticsearch?
Elasticsearch est un moteur de recherche et d'analyse dans un ensemble de documents particulièrement performant sur les données textuelles, ou pour toute requête structurée comprenant des données numériques, textuelles, géospatiales. Les résultats de la recherche sont classés automatiquement par pertinence. Les recherches peuvent être hautement flexibles et bénéficier d'un utilisateur métier expert qui saurait comment la spécifier.
Dans le cadre particulier de l'identification des entreprises, Elasticsearch fait partie de la solution retenue par
- l'API "Sirene données ouvertes" (DINUM) (cf https://annuaire-entreprises.data.gouv.fr/)
- l'API de recherche d'entreprises Française de la Fabrique numérique des Ministères Sociaux (cf https://api.recherche-entreprises.fabrique.social.gouv.fr/)
- le projet de l'Insee "Amélioration de l'identification de l'employeur dans le recensement", pour faire une première sélection des établissements pertinents pour un bulletin de recensement donné.
Dans le cadre de l'identification des individus, Elasticsearch fait partie de la solution envisagée pour l'identification des individus au RNIPP (Répertoire national des personnes physiques) pour le projet CSNS (Code statistique non signifiant), et est la solution technique sous-jacente au projet matchID du ministère de l'intérieur.
C'est également un outil qui peut être utilisé pour des appariements flous ad-hoc dans le cadre d'étude à l'Insee, par exemple au niveau produits entre les données de caisse de RelevanC et OpenFoodFacts et entre les points de ventes RelevanC et Sirius [Communication JMS].
Une introduction à Elastic Search pour l'appariement flou est disponible sur le datalab ici : Notebook d'introduction
Au delà du secteur public, on peut citer qu'Amazon AWS fait partie des utilisateurs historiques d'Elasticsearch.
2. Présentation générale et vocabulaire
Un index est une collection de documents dans lesquels on souhaite chercher, préalablement ingérés dans un moteur de recherche Elasticsearch (étape d'indexation), dans notre cas d'usage, les documents sont les établissements. L'étape d'indexation a été faites préalablement dans un moteur mis à disposition sur le datalab à tous. L'indexation consiste à pré-réaliser les traitements des termes des documents pour gagner en efficacité lors de la phase de recherche. L'indexation est faites une fois pour de nombreuses recherches potentielles, pour lesquelles la rapidité de réponse peut être crutiale.
Les documents sont constitués de variables, les champs ('fields'), dont le type est spécifié ("text", "keywoard", "geo_point", "numeric"...) à l'indexation.
Les analyzers sont très utiles pour les données textuelles: ils se composent en général d'un tokenizer (méthode pour séparer le texte en éléments unitaires, les tokens, en général des mots, mais cela peut aussi être des n-grammes de caractères) et de filtres, par exemple de certains mots (stopwords, gestion des synonymes). Chaque champ peut être associé à un analyzer particulier, dans un objet défini à l'indexation, le mapping. Le mapping comporte le schéma des données ainsi que la façon dont ils seront analysés pour la recherche, i.e. champ, type et analyzer associé.
L'utilisateur va requêter le moteur de recherche via des query. Ces dernières sont très flexibles et constitue un langage en soi: on parle de Query DSL (Domain-Specific Language).
La documentation Elastic va répondre à au moins trois enjeux, à savoir distinguer pour ne pas s'y perdre:
- Mettre en place et configurer un cluster Elastic Search adapté au besoin
- Indexer intelligemment ses données: définir les types et les analyzers
- Requêter intelligemment ces données
L'étape 1 a été gérée par la DIIT via la mise en place de services Elastic Search sur le datalab. L'étape 2 a été gérée par le SSP Lab, en reprenant pour le funathon l'indexation utilisée dans le cadre du projet AIEE "Amélioration de l'identification de l'employeur dans le recensement". Le sujet peut donc être traité intégralement en s'intéressant à la dernière étape.
Les mots clés utiles pour parcourir la documentation sont "Query DSL", "Text analysis", "Search data". https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html