Contexte
Intégrer souvent ElasticSearch (ES) avec des applications existantes pose des défis en raison des différences dans les structures de données et les exigences d’indexation. Pour les schémas relationnels complexes, la dénormalisation des données et l'aplatissement des entités peuvent améliorer les performances et simplifier les requêtes.
Question :
Comment puis-je aplatir une base de données avec plusieurs liaisons d'entités (n :m relations) pour une indexation optimale en ES ?
Solution :
1. Dénormaliser les données :
Créez des documents produits qui incluent toutes les données pertinentes, y compris des tableaux intégrés d'entités associées. Voici un exemple de schéma :
{ "id": "00c8234d71c4e94f725cd432ebc04", "title": "Alpha", "price": 589.0, "flags": ["Sellout", "Top Product"] }
2. Type de mappage :
Configurez le type de mappage pour qu'il corresponde au nouveau schéma :
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" } } } } }
3. Requête SQL :
Récupérer les données de la base de données à l'aide d'une requête qui joint les entités associées et concatène les titres des drapeaux :
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!