Spät, aber zu beantworten dachte man, es nützlich finden könnten.
Nachstehend finden Sie die Schritte zum Importieren von Daten von mongodb nach Solr 4.7.0 mit DataImportHandler.
Schritt 1:
Angenommen, Ihre MongoDB folgende Datenbank und Sammlung hat
Database Name: Test
Collection Name: sample
Die 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 lib
Ordner in Ihrem Solrhome für lder (die bin
und collection1
Ordner hat)
fügen Sie unten jar Dateien zu lib
Ordner. Sie können den Solr-Mongo-Importer von here 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 Solr Felder in schema.xml (angenommen, dass id standardmäßig bereits definiert ist)
unteren Felder in schema.xml innerhalb des <fields> </fields>
Tag hinzuzufügen.
<field name="Name" type="text_general" indexed="true" stored="true"/>
<field name="EmployeeNumber" type="int" indexed="true" stored="true"/>
Schritt 4:
Deklarieren Daten-config-Datei in solrconfig.xml nach innen <config> </config>
tag unten Code hinzufügen.
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
Schritt 5:
eine daten config.xml Datei in dem Pfad collection1 \ conf \ erstellen (das standardmäßig solrconfig.xml und schema.xml hält)
Daten-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:
Unter der Annahme, solr (ich habe verwendet Port 8080) und mongodb ausgeführt wird, öffnen Sie den folgenden Link http://localhost:8080/solr/dataimport?command=full-import in Ihrem Browser, um Daten von mongodb zu solr importieren.
Die importierten Felder sind _id, Name und EmpNumber (MongoDB) als ID, Name und EmployeeNumber (Solr).
können Sie sehen das Ergebnis in http://localhost:8080/solr/query?q=*
Für mich gibt es einige Performance-Probleme für SolrMongoImporter sind auf größeren mongoDB. Also habe ich mongoSolrImporter getestet, was 10x schneller war, wegen Multithreading. -> https://github.com/5missions/mongoSolrImporter –