Maison  >  Article  >  développement back-end  >  Comment optimiser la structure d'index ElasticSearch avec plusieurs liaisons d'entités ?

Comment optimiser la structure d'index ElasticSearch avec plusieurs liaisons d'entités ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-29 22:58:29886parcourir

How to Optimize ElasticSearch Index Structure with Multiple Entity Bindings?

Comment configurer la structure d'index ElasticSearch avec plusieurs liaisons d'entités

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn