Tarde en responder, sin embargo pensé que la gente podría encontrarlo útil.
A continuación se muestran los pasos para importar datos de mongodb a Solr 4.7.0 usando DataImportHandler.
Paso 1:
Suponga que su Mongodb tiene la siguiente base de datos y colección
Database Name: Test
Collection Name: sample
El sample
la colección tiene los siguientes documentos
db.sample.find()
{ "_id" : ObjectId("54c0c6666ee638a21198793b"), "Name" : "Rahul", "EmpNumber" : 452123 }
{ "_id" : ObjectId("54c0c7486ee638a21198793c"), "Name" : "Manohar", "EmpNumber" : 784521 }
Paso 2:
Crear una lib
carpeta en su carpeta solrhome (que tiene bin
y collection1
carpetas)
agregue los archivos jar a continuación a lib
carpeta. ¡Puedes descargar solr-mongo-importer desde aquí!
- 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)
Paso 3:
Declare los campos de Solr en schema.xml (suponiendo que la identificación ya esté definida de manera predeterminada)
agregue los siguientes campos en schema.xml dentro de <fields> </fields>
etiqueta.
<field name="Name" type="text_general" indexed="true" stored="true"/>
<field name="EmployeeNumber" type="int" indexed="true" stored="true"/>
Paso 4:
Declare el archivo de configuración de datos en solrconfig.xml agregando el siguiente código dentro de <config> </config>
etiqueta.
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
Paso 5:
Cree un archivo data-config.xml en la ruta collection1\conf\ (que por defecto contiene solrconfig.xml y schema.xml)
datos-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>
Paso 6:
Suponiendo que solr (he usado el puerto 8080) y mongodb se están ejecutando, abra el siguiente enlace http://localhost:8080/solr/dataimport?command=full-import en su navegador para importar datos de mongodb a solr.
los campos importados son _id, Nombre y EmpNumber (MongoDB) como id, Nombre y EmployeeNumber (Solr).
Puede ver el resultado en http://localhost:8080/solr/query?q=*