MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Schritte zum Verbinden von MongoDB und Solr mithilfe von DataImportHandler

Späte Antwort, aber ich dachte, die Leute könnten es nützlich finden.

Nachfolgend finden Sie die Schritte zum Importieren von Daten aus mongodb nach Solr 4.7.0 mit DataImportHandler.

Schritt 1:

Angenommen, Ihre Mongodb hat die folgende Datenbank und Sammlung

Database Name: Test
Collection Name: sample

Das sample Sammlung hat folgende Dokumente

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

Schritt 2:

Erstellen Sie eine lib Ordner in Ihrem solrhome-Ordner (der bin enthält und collection1 Ordner)

fügen Sie die folgenden JAR-Dateien zu lib hinzu Mappe. Sie können solr-mongo-importer hier herunterladen!

- 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)

Schritt 3:

Deklarieren Sie Solr-Felder in schema.xml (vorausgesetzt, dass die ID bereits standardmäßig definiert ist)

Fügen Sie die folgenden Felder in schema.xml innerhalb von <fields> </fields> hinzu -Tag.

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

Schritt 4:

Deklarieren Sie die Datei data-config in solrconfig.xml, indem Sie den folgenden Code in <config> </config> einfügen -Tag.

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

Schritt 5:

Erstellen Sie eine data-config.xml-Datei im Pfad collection1\conf\ (der standardmäßig solrconfig.xml und schema.xml enthält)

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>

Schritt 6:

Angenommen, solr (ich habe Port 8080 verwendet) und mongodb laufen, öffnen Sie den folgenden Link http://localhost:8080/solr/dataimport?command=full-import in Ihrem Browser, um Daten von mongodb nach solr zu importieren.

importierte Felder sind _id,Name und EmpNumber(MongoDB) als id,Name und EmployeeNumber(Solr).

Sie können das Ergebnis in http://localhost:8080/solr/query?q=* sehen