sql >> Databasteknik >  >> NoSQL >> MongoDB

Steg för att ansluta MongoDB och Solr med DataImportHandler

Sen att svara, men jag trodde att folk kunde ha nytta av det.

Nedan följer stegen för att importera data från mongodb till Solr 4.7.0 med DataImportHandler.

Steg 1:

Anta att din Mongodb har följande databas och samling

Database Name: Test
Collection Name: sample

sample samlingen har följande dokument

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

Steg 2:

Skapa en lib mapp i din solrhome-mapp (som har bin och collection1 mappar)

lägg till nedanstående jar-filer till lib mapp. Du kan ladda ner solr-mongo-importer härifrån!

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

Steg 3:

Deklarera Solr-fält i schema.xml (förutsatt att id redan är definierat som standard)

lägg till nedanstående fält i schema.xml inuti <fields> </fields> tag.

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

Steg 4:

Deklarera data-config-filen i solrconfig.xml genom att lägga till nedanstående kod inuti <config> </config> tag.

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

Steg 5:

Skapa en data-config.xml-fil i sökvägen collection1\conf\ (som som standard innehåller solrconfig.xml och 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>

Steg 6:

Förutsatt att solr (jag har använt port 8080) och mongodb körs, öppna följande länk http://localhost:8080/solr/dataimport?command=full-import i din webbläsare för att importera data från mongodb till solr.

fält som importeras är _id,Name och EmpNumber(MongoDB) som id,Name och EmployeeNumber(Solr).

Du kan se resultatet i http://localhost:8080/solr/query?q=*



  1. Mongo unika index okänslig för skiftläge

  2. MongoDB Aggregation Framework - Byt namn på dynamiskt fält

  3. Hitta MongoDB-poster där arrayfältet inte är tomt

  4. MongoDB:Allvarligt fel:Klass 'MongoClient' hittades inte