MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Kroki łączenia MongoDB i Solr za pomocą DataImportHandler

Spóźnił się z odpowiedzią, jednak sądziłem, że ludzie mogą uznać to za przydatne.

Poniżej znajdują się kroki importowania danych z mongodb do Solr 4.7.0 za pomocą DataImportHandler.

Krok 1:

Załóż, że twój Mongodb ma następującą bazę danych i kolekcję

Database Name: Test
Collection Name: sample

sample kolekcja posiada następujące dokumenty

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

Krok 2:

Utwórz lib folder w folderze solrhome (który ma bin i collection1 foldery)

dodaj poniższe pliki jar do lib teczka. Możesz pobrać solr-mongo-importer stąd!

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

Krok 3:

Zadeklaruj pola Solr w schema.xml (przy założeniu, że id jest już zdefiniowane domyślnie)

dodaj poniższe pola w schema.xml wewnątrz <fields> </fields> tag.

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

Krok 4:

Zadeklaruj plik data-config w solrconfig.xml dodając poniższy kod wewnątrz <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>

Krok 5:

Utwórz plik data-config.xml w ścieżce collection1\conf\ (który domyślnie zawiera solrconfig.xml i 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>

Krok 6:

Zakładając, że solr (użyłem portu 8080) i mongodb są uruchomione, otwórz poniższy link http://localhost:8080/solr/dataimport?command=full-import w swojej przeglądarce, aby zaimportować dane z mongodb do solr.

importowane pola to _id,Name i EmpNumber(MongoDB) jako id,Name i EmployeeNumber(Solr).

Możesz zobaczyć wynik w http://localhost:8080/solr/query?q=*



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zarządzać szablonami konfiguracji dla baz danych za pomocą ClusterControl

  2. Nie udało się uruchomić aplikacji (port 8080) niedostępny

  3. MongoDB przez Mongoose JS — Co to jest findByID?

  4. mongodb.conf bind_ip =127.0.0.1 nie działa, ale 0.0.0.0 działa

  5. Jak wypełnić zagnieżdżone jednostki w manguście?