Utilisez l'outil open source solr-to-es pour migrer des documents depuis un noyau Solr (Solr Core) vers un index Alibaba Cloud Elasticsearch.
solr-to-es prend uniquement en charge les clusters Elasticsearch V6.X. Si votre cluster cible exécute une version différente, effectuez un test de compatibilité avant de poursuivre.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster Alibaba Cloud Elasticsearch V6.X avec la fonctionnalité Auto Indexing activée. Cet exemple utilise la version 6.3.2. Pour les instructions de configuration, consultez les rubriques Créer un cluster Alibaba Cloud Elasticsearch et Configurer le fichier YML.
Une instance Elastic Compute Service (ECS) déployée dans la même région, la même zone et le même Virtual Private Cloud (VPC) que le cluster Elasticsearch. Cet exemple utilise CentOS 7.3. Pour les instructions de configuration, consultez la rubrique Étape 1 : Créer une instance ECS.
Solr installé sur l'instance ECS. Cet exemple utilise Solr 5.0.0. Pour plus d'informations, consultez la documentation officielle de Solr.
Python 3,0 ou version ultérieure installé sur l'instance ECS. Cet exemple utilise Python 3.6.2.
pysolr 3.3.3 ou version ultérieure (mais antérieure à 4,0) installé sur l'instance ECS.
Installer solr-to-es
-
Connectez-vous à l'instance ECS. Pour obtenir des instructions, consultez la rubrique Se connecter à une instance Linux à l'aide d'un mot de passe ou d'une clé.
Cet exemple utilise un compte utilisateur standard.
Téléchargez l'outil solr-to-es et accédez au répertoire contenant le fichier
setup.py.-
Installez solr-to-es :
sudo python setup.py install
Migrer des documents
Toutes les commandes de migration suivent la même structure : fournissez l'URL de requête Solr, l'endpoint Elasticsearch avec les identifiants, le nom de l'index cible et le type d'index.
Exécutez la commande suivante pour migrer des documents d'un noyau Solr vers un index Elasticsearch :
sudo python __main__.py <solr_url>:8983/solr/<my_core>/select http://<username>:<password>@<elasticsearch_url>:9200 <elasticsearch_index> <doc_type>
Remplacez les espaces réservés par vos valeurs réelles :
| Espace réservé | Description | Exemple |
|---|---|---|
<solr_url> |
Endpoint de votre cluster Solr | http://116.62.. |
<my_core> |
Nom du noyau Solr contenant les documents à migrer | my_core |
<username> |
Nom d'utilisateur de votre cluster Elasticsearch. La valeur par défaut est elastic. |
elastic |
<password> |
Mot de passe défini lors de la création du cluster | — |
<elasticsearch_url> |
Endpoint interne ou public de votre cluster Elasticsearch. Vous pouvez trouver cette information sur la page Basic Information de votre cluster. Consultez la rubrique Afficher les informations de base d'un cluster. | es-cn-****.elasticsearch.aliyuncs.com |
<elasticsearch_index> |
Nom de l'index cible | elasticsearch_index |
<doc_type> |
Type de l'index | doc_type |
Si vous utilisez une version différente de solr-to-es, essayez plutôt la syntaxe de commande alternative suivante. Pour plus de détails, consultez la documentation de solr-to-es. sudo solr-to-es [-h] [--solr-query SOLR_QUERY] [--solr-fields COMMA_SEP_FIELDS] [--rows-per-page ROWS_PER_PAGE] [--es-timeout ES_TIMEOUT] solr_url elasticsearch_url elasticsearch_index doc_type L'exécution de cette commande dans l'environnement décrit dans cette rubrique renvoie l'erreur suivante : -bash: solr-to-es.py: command not found
Exemple
Cet exemple interroge tous les documents du noyau Solr my_core et les écrit dans l'index elasticsearch_index de votre cluster Elasticsearch.
Sur l'instance ECS, accédez au répertoire
solr-to-es-master/solr_to_es.-
Exécutez la commande suivante :
sudo python __main__.py 'http://116.62.**.**:8983/solr/my_core/select?q=*%3A*&wt=json&indent=true' 'http://elastic:Your password@es-cn-so4lwf40ubsrf****.public.elasticsearch.aliyuncs.com:9200' elasticsearch_index doc_typeL'URL de requête Solr utilisée dans cette commande contient les paramètres suivants :
Paramètre Description qObligatoire. Expression de requête utilisant la syntaxe de requête standard de Solr. *%3A*correspond à tous les documents.wtFormat de réponse. Valeurs prises en charge : json,xml,python,ruby,csv.indentIndique si la réponse doit être indentée pour une meilleure lisibilité. Valeur par défaut : false.Pour les autres paramètres, consultez la section Migrer des documents.
-
Connectez-vous à la console Kibana de votre cluster Elasticsearch. Pour obtenir des instructions, consultez la rubrique Se connecter à la console Kibana.
Cet exemple utilise la console Kibana d'un cluster Elasticsearch V6.7. Les étapes peuvent varier selon les versions.
Dans le volet de navigation de gauche, cliquez sur Dev Tools, puis sur Go to work.
-
Sous l'onglet Console, exécutez la commande suivante pour confirmer que l'index
elasticsearch_indexa bien été créé :GET _cat/indices?v -
Exécutez la commande suivante pour afficher les documents migrés :
GET /elasticsearch_index/doc_type/_searchEn cas de succès, la réponse ressemble à ceci :
{ "took" : 12, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 2, "max_score" : 1.0, "hits" : [ { "_index" : "elasticsearch_index", "_type" : "doc_type", "_id" : "Tz8WNW4BwRjcQciJ****", "_score" : 1.0, "_source" : { "id" : "2", "title" : [ "test" ], "_version_" : 1648195017403006976 } }, { "_index" : "elasticsearch_index", "_type" : "doc_type", "_id" : "Tj8WNW4BwRjcQciJ****", "_score" : 1.0, "_source" : { "id" : "1", "title" : [ "change.me" ], "_version_" : 1648195007391203328 } } ] } }
Étapes suivantes
Après avoir confirmé que les documents ont été migrés avec succès :
Mettez à jour les paramètres de connexion de votre application pour qu'ils pointent vers l'endpoint Elasticsearch.
Validez que les requêtes de recherche renvoient les résultats attendus.
Si la fonctionnalité Auto Indexing n'est plus nécessaire, désactivez-la afin d'éviter toute création d'index non intentionnelle. Pour obtenir des instructions, consultez la rubrique Configurer le fichier YML.