← Projets

Analyse des Inspections de Restaurants NYC — Elasticsearch & Kibana

Sorbonne UniversitéDéveloppement des Algorithmes d'Application Réticulaire (DAAR)Nov. 2024

Analyse du dataset d'inspections sanitaires des restaurants de New York City via Elasticsearch et Kibana. Les données sont ingérées dans un index Elasticsearch via l'outil d'import de fichiers Kibana, qui mappe automatiquement les champs (dates, notes, codes de violation) pour permettre des requêtes structurées et des visualisations interactives.

11 requêtes Elasticsearch — résultats clés

QuestionRésultat
Q1 — Quartiers de New YorkManhattan 82 466 · Brooklyn 60 243 · Queens 52 785 · Bronx 19 625 · Staten Island 8 009
Q2 — Quartier avec le plus de restaurantsManhattan (82 466 documents)
Q3 — Code violation 04NFilth flies / FRSA flies (mouches d'égout, drosophiles…) dans zones alimentaires
Q4 — Restaurants avec note AShake Shack JFK, Marinara 483 Amsterdam Ave, Taco Bell 340 Broadway…
Q5 — Cuisine la plus populaire par quartierAmerican dominant dans tous les quartiers (3 718 pour MN17, 1 656 pour MN13…)
Q6 — Date de la dernière inspection04/02/2024
Q7 — Restaurants chinois grade A à Brooklyn1 883 résultats (Fortune House, Best Wok No 1, Hop Fa Bakery…)
Q8 — Adresse de LADUREE864 Madison Avenue, Manhattan 10021 (35 occurrences)
Q9 — Cuisine la plus touchée par la violation température (140°F)American — 35 171 violations
Q10 — Top 5 violations10F (30 846) · 08A (23 522) · 06D (14 824) + 2 autres
Q11 — Chaîne la plus présenteDunkin — 25 111 occurrences

Techniques de requêtage

Les 11 requêtes couvrent les principales fonctionnalités de l'API Elasticsearch :

  • Agrégations terms — comptage par valeur de champ (quartier, cuisine, code violation, chaîne) avec tri par _count desc.
  • Agrégations imbriquées — sous-agrégation popular_cuisinedans by_neighborhood pour obtenir la cuisine dominante par zone NTA ; sous-agrégation top_hits dans top_violation_codes pour récupérer une description d'exemple par code.
  • Filtres term et bool must — filtrage exact multi-critères (cuisine + grade + borough en Q7).
  • Tri temporelsort desc sur INSPECTION DATEpour trouver la dernière inspection (Q6).
  • Mapping keyword — mise à jour du mapping du champ DBA pour permettre l'agrégation exacte sur les noms de chaînes (Q11).

Exemple — requête Top 5 violations avec description associée :

GET daar/_search
{
  "size": 0,
  "aggs": {
    "top_violation_codes": {
      "terms": { "field": "VIOLATION CODE", "size": 5, "order": { "_count": "desc" } },
      "aggs": {
        "violation_description": {
          "top_hits": { "_source": ["VIOLATION DESCRIPTION"], "size": 1 }
        }
      }
    }
  }
}

Dashboard Kibana

Deux visualisations principales composent le dashboard :

  • Carte géospatiale — chaque point représente un restaurant inspecté, positionné par coordonnées GPS. Permet d'identifier les zones de densité d'inspection et les quartiers nécessitant un suivi renforcé.
  • Graphique temporel (area chart) — évolution du nombre de violations sur des intervalles de 30 jours, décomposée par les 5 codes les plus fréquents. Révèle les tendances saisonnières et les infractions récurrentes.
Lens Visualization — évolution temporelle des violations par code sur 30 jours
11requêtes Elasticsearch
223 128documents indexés (5 boroughs)
Dunkinchaîne la plus inspectée — 25 111 occurrences

Stack

ElasticsearchElasticsearch
KibanaKibana
Query DSLQuery DSL

Équipe

Abdelkader BoumessaoudSorbonne Universitéabdelkader.boumessaoud.pro@gmail.com
Hichem BouzourineSorbonne Université

Encadrant

Binh-Minh Bui-Xuan

Maître de conférences — Sorbonne Université / LIP6

Encadrant

Guillaume Hivert

Sorbonne Université / LIP6

Encadrant

Alfred Deivassayagame

Sorbonne Université / LIP6