MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Etapas para conectar MongoDB e Solr usando DataImportHandler


Tarde para responder, porém pensei que as pessoas poderiam achar útil.

Abaixo estão as etapas para importar dados do mongodb para o Solr 4.7.0 usando DataImportHandler.

Etapa 1:


Suponha que seu Mongodb tenha o seguinte banco de dados e coleção
Database Name: Test
Collection Name: sample

A sample coleção tem os seguintes documentos
db.sample.find()
{ "_id" : ObjectId("54c0c6666ee638a21198793b"), "Name" : "Rahul", "EmpNumber" : 452123 }
{ "_id" : ObjectId("54c0c7486ee638a21198793c"), "Name" : "Manohar", "EmpNumber" : 784521 }

Etapa 2:


Crie uma lib pasta em sua pasta solrhome (que tem bin e collection1 pastas)

adicione os arquivos jar abaixo a lib pasta. Você pode baixar o solr-mongo-importer aqui!
- 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)

Etapa 3:


Declare campos Solr em schema.xml (presumindo que o id já esteja definido por padrão)

adicione os campos abaixo no schema.xml dentro do <fields> </fields> marcação.
 <field name="Name" type="text_general" indexed="true" stored="true"/>
 <field name="EmployeeNumber" type="int" indexed="true" stored="true"/>

Etapa 4:


Declare o arquivo data-config em solrconfig.xml adicionando o código abaixo dentro de <config> </config> marcação.
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

Etapa 5:


Crie um arquivo data-config.xml no caminho collection1\conf\ (que por padrão contém solrconfig.xml e 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>

Etapa 6:


Assumindo que o solr (eu usei a porta 8080) e o mongodb estão em execução, abra o seguinte link http://localhost:8080/solr/dataimport?command=full-import no seu navegador para importar dados do mongodb para o solr.

campos importados são _id,Name e EmpNumber(MongoDB) como id,Name e EmployeeNumber(Solr).

Você pode ver o resultado em http://localhost:8080/solr/query?q=*