sql >> データベース >  >> NoSQL >> MongoDB

DataImportHandlerを使用してMongoDBとSolrを接続する手順

    答えるのが遅いが、人々はそれが役に立つと思うかもしれないと思った。

    以下は、DataImportHandlerを使用してmongodbからSolr4.7.0にデータをインポートするための手順です。

    ステップ1:

    Mongodbに次のデータベースとコレクションがあると仮定します

    Database Name: Test
    Collection Name: sample
    

    sample コレクションには次のドキュメントがあります

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

    ステップ2:

    libを作成します solrhomeフォルダー内のフォルダー(binがあります) およびcollection1 フォルダ)

    以下のjarファイルをlibに追加します フォルダ。ここからsolr-mongo-importerをダウンロードできます!

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

    ステップ3:

    schema.xmlでSolrフィールドを宣言します(idはデフォルトですでに定義されていると想定しています)

    <fields> </fields>内のschema.xmlに以下のフィールドを追加します タグ。

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

    ステップ4:

    <config> </config>内に以下のコードを追加して、solrconfig.xmlでdata-configファイルを宣言します。 タグ。

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

    ステップ5:

    パスcollection1\conf \にdata-config.xmlファイルを作成します(デフォルトではsolrconfig.xmlと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>
    

    ステップ6:

    solr(ポート8080を使用)とmongodbが実行されていると仮定して、次のリンクhttp:// localhost:8080 / solr / dataimport?command =full-importをブラウザーで開き、mongodbからsolrにデータをインポートします。

    インポートされるフィールドは、id、NameおよびEmployeeNumber(Solr)として_id、NameおよびEmpNumber(MongoDB)です。

    結果はhttp://localhost:8080/solr/query?q=*で確認できます。



    1. MongoDB:埋め込みドキュメントの一意キー

    2. redisサーバーを実行し続ける方法

    3. MongoDBでElasticsearchを使用するにはどうすればよいですか?

    4. ノードのredisを使用してハッシュキーのすべてのフィールドと値を取得します