Maison > Article > développement back-end > Comment concevoir une structure d'index Elasticsearch pour les relations N:M ?
Configuration de la structure d'index Elasticsearch pour plusieurs liaisons d'entités
Introduction
Intégration d'Elasticsearch (ES ) dans des applications existantes peut s'avérer une tâche ardue. Ce dialogue aborde un défi lié à la configuration de la structure d'index ES lors du traitement de liaisons d'entités multiples dans une base de données existante.
Structure de la base de données
La structure de la base de données fournie présente trois tables : Products, Flags et flagsProducts, qui représente une relation N:M entre les produits et les flags. L'objectif est de reproduire cette structure dans ES tout en l'optimisant pour des requêtes efficaces.
Approche recommandée : aplatissement
Plutôt que de maintenir la relation N:M, il est recommandé d'aplatir la structure et créer des documents de produit qui intègrent des informations de drapeau. Cette approche simplifie les requêtes et améliore l'accès aux données.
Structure du document produit
Le document produit aplati contiendrait les champs suivants :
Exemples de documents de produit :
{ "id": "00c8234d71c4e94f725cd432ebc04", "title": "Alpha", "price": 589.0, "flags": ["Sellout", "Top Product"] } { "id": "018357657529fef056cf396626812", "title": "Beta", "price": 355.0, "flags": ["Discount"] }
Type de mappage de produit
Le correspondant Le type de mappage dans ES serait :
PUT products { "mappings": { "product": { "properties": { "id": { "type": "string", "index": "not_analyzed" }, "title": { "type": "string" }, "price": { "type": "double", "null_value": 0.0 }, "flags": { "type": "string", "index": "not_analyzed" } } } } }
Récupération des données de la base de données
Pour récupérer les données nécessaires de la base de données pour l'ingestion dans ES, utilisez la requête SQL suivante :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!