MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Étapes pour connecter MongoDB et Solr à l'aide de DataImportHandler

Tard pour répondre, mais j'ai pensé que les gens pourraient le trouver utile.

Vous trouverez ci-dessous les étapes pour importer des données de mongodb vers Solr 4.7.0 à l'aide de DataImportHandler.

Étape 1 :

Supposons que votre Mongodb ait la base de données et la collection suivantes

Database Name: Test
Collection Name: sample

L'sample la collection contient les documents suivants

db.sample.find()
{ "_id" : ObjectId("54c0c6666ee638a21198793b"), "Name" : "Rahul", "EmpNumber" : 452123 }
{ "_id" : ObjectId("54c0c7486ee638a21198793c"), "Name" : "Manohar", "EmpNumber" : 784521 }

Étape 2 :

Créer une lib dossier dans votre dossier solrhome (qui contient bin et collection1 dossiers)

ajouter les fichiers jar ci-dessous à lib dossier. Vous pouvez télécharger solr-mongo-importer à partir d'ici !

- solr-dataimporthandler-4.7.0.jar
- solr-mongo-importer-1.0.0.jar 
- mongo-java-driver-2.10.1.jar (this is the mongo java driver)

Étape 3 :

Déclarez les champs Solr dans schema.xml (en supposant que l'id est déjà défini par défaut)

ajoutez les champs ci-dessous dans schema.xml à l'intérieur du <fields> </fields> balise.

 <field name="Name" type="text_general" indexed="true" stored="true"/>
 <field name="EmployeeNumber" type="int" indexed="true" stored="true"/>

Étape 4 :

Déclarez le fichier data-config dans solrconfig.xml en ajoutant le code ci-dessous dans <config> </config> balise.

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

Étape 5 :

Créez un fichier data-config.xml dans le chemin collection1\conf\ (qui contient par défaut solrconfig.xml et schema.xml)

data-config.xml

<?xml version="1.0"?>
<dataConfig>
<dataSource name="MyMongo" type="MongoDataSource" database="Test" />
<document name="import">
 <!-- if query="" then it imports everything -->
     <entity  processor="MongoEntityProcessor"
             query="{Name:'Rahul'}"
             collection="sample"   
             datasource="MyMongo"
             transformer="MongoMapperTransformer" name="sample_entity">

               <!--  If mongoField name and the field declared in schema.xml are same than no need to declare below.
                     If not same than you have to refer the mongoField to field in schema.xml
                    ( Ex: mongoField="EmpNumber" to name="EmployeeNumber"). -->                                              

           <field column="_id"  name="id"/>               
           <field column="EmpNumber" name="EmployeeNumber" mongoField="EmpNumber"/>                            
       </entity>
 </document>
</dataConfig>

Étape 6 :

En supposant que solr (j'ai utilisé le port 8080) et mongodb sont en cours d'exécution, ouvrez le lien suivant http://localhost:8080/solr/dataimport?command=full-import dans votre navigateur pour importer des données de mongodb vers solr.

les champs importés sont _id,Name et EmpNumber(MongoDB) as id,Name et EmployeeNumber(Solr).

Vous pouvez voir le résultat dans http://localhost:8080/solr/query?q=*