Maison  >  Article  >  base de données  >  Explorez un moteur de stockage de recherche en texte intégral qui améliore les performances des requêtes : intégration de MySQL et Elasticsearch

Explorez un moteur de stockage de recherche en texte intégral qui améliore les performances des requêtes : intégration de MySQL et Elasticsearch

王林
王林original
2023-07-26 22:51:21861parcourir

Explorez le moteur de stockage de recherche en texte intégral qui améliore les performances des requêtes : l'intégration de MySQL et Elasticsearch

Introduction :
Avec le développement rapide d'Internet et la croissance explosive de l'information, la recherche en texte intégral est devenue de plus en plus importante dans de nombreux domaines d'application. Bien que les bases de données relationnelles traditionnelles telles que MySQL puissent stocker et interroger des données, leurs capacités de recherche en texte intégral sont limitées. Afin d'améliorer l'efficacité de la recherche en texte intégral, nous pouvons utiliser des moteurs de recherche open source comme Elasticsearch. Cet article présentera l'intégration de MySQL et Elasticsearch pour obtenir une fonction de recherche en texte intégral plus efficace.

Contexte :
Pour un scénario d'application typique, tel qu'un site Web de blog, nous avons généralement un tableau contenant le contenu de l'article, et le contenu de l'article doit être recherché en texte intégral. La méthode traditionnelle consiste à utiliser l'instruction LIKE de MySQL pour effectuer des requêtes floues. Pour les applications à petite échelle, le problème de performances peut ne pas être évident. Mais à mesure que l'ensemble de données devient de plus en plus volumineux, l'efficacité des requêtes des bases de données relationnelles traditionnelles diminue considérablement. À l'heure actuelle, nous devons utiliser une solution plus efficace pour gérer la recherche en texte intégral.

Solution :
Elasticsearch est un moteur de recherche et d'analyse distribué en temps réel écrit basé sur Lucene, qui offre des capacités de recherche en texte intégral hautes performances et puissantes. Pour les requêtes de stockage et de bases de données relationnelles, MySQL est une solution mature et largement utilisée. La combinaison des deux permet d'obtenir une solution capable à la fois de stocker des données et d'effectuer efficacement une recherche en texte intégral. Ci-dessous, nous présenterons en détail comment intégrer MySQL et Elasticsearch.

Première étape : installer et configurer Elasticsearch
Tout d'abord, nous devons installer Elasticsearch. Téléchargez et installez la dernière version d'Elasticsearch depuis le site officiel. Une fois l'installation terminée, ouvrez le fichier elasticsearch.yml dans le répertoire de configuration, définissez cluster.name sur un nom unique et définissez network.host sur l'adresse IP locale.

Étape 2 : Créer un index et un mappage
Dans Elasticsearch, nous devons créer un index pour stocker les données et définir un mappage pour spécifier le type de champ des données. Le processus de création d'index et de mappages peut être effectué à l'aide de l'API RESTful d'Elasticsearch, voici un exemple :

PUT /my_index
{
"mappings": {

"article": {
  "properties": {
    "title": {
      "type": "text"
    },
    "content": {
      "type": "text"
    },
    "date": {
      "type": "date"
    }
  }
}

}
}

Dans cet exemple, nous créons un index An nommé my_index et définit un type nommé article. Dans le type d'article, nous définissons trois champs : titre, contenu et date, et spécifions leurs types de données.

Étape 3 : Synchroniser les données
Ensuite, nous devons synchroniser les données de MySQL avec Elasticsearch. Pour réaliser cette étape, nous pouvons utiliser le plug-in Elasticsearch elasticsearch-river-jdbc. Grâce à ce plug-in, nous pouvons établir une source de données et importer des données de MySQL dans l'index Elasticsearch. Voici un exemple :

PUT /_river/my_river/_meta
{
"type": "jdbc",
"jdbc": {

"url": "jdbc:mysql://localhost:3306/mydb",
"user": "root",
"password": "password",
"sql": "SELECT id, title, content, date FROM articles",
"index": "my_index",
"type": "article"

}
}

Dans cet exemple, nous créons un fichier appelé The data source de my_river, et spécifie les informations de connexion MySQL et l'instruction SQL des données à importer.

Étape 4 : Effectuer une recherche en texte intégral
Une fois la synchronisation des données terminée, nous pouvons utiliser la fonction de recherche en texte intégral d'Elasticsearch pour interroger les données. Voici un exemple :

GET /my_index/article/_search
{
"query": {

"match": {
  "content": "Elasticsearch"
}

}
}

Dans cet exemple, nous avons recherché des articles dont le contenu contient des mots-clés Elasticsearch.

Conclusion : 
En intégrant MySQL et Elasticsearch, nous pouvons améliorer les performances et l'efficacité de la recherche en texte intégral. MySQL est responsable du stockage et de la gestion des données, tandis qu'Elasticsearch est responsable de la recherche efficace en texte intégral. De telles solutions peuvent être appliquées à divers scénarios d'application, tels que les sites Web de commerce électronique, les sites Web d'actualités et d'autres applications nécessitant une recherche efficace. Grâce aux étapes ci-dessus, nous pouvons facilement intégrer MySQL et Elasticsearch pour obtenir un moteur de stockage de recherche en texte intégral plus efficace.

Références :

  • Documentation officielle d'Elasticsearch : https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html
  • Plug-in JDBC Elasticsearch River : https://github.com /jprante/elasticsearch-river-jdbc

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