使用DataImportHandler连接MongoDB和Solr的步骤

k2arahey  于 2022-11-05  发布在  Solr
关注(0)|答案(3)|浏览(162)

我是SOLR和MONGODB的新手。
我尝试使用DataImportHandler将数据从mongodb索引到SOLR中,但是我找不到需要遵循的确切步骤。
您能帮助我获得使用DataImportHandler将MongoDB索引到Solr中的确切步骤吗?
解决方案版本-解决方案-4.6.0
MongoDB版本- 2.2.7

pengsaosao

pengsaosao1#

迟来的回答,然而认为人们可能会发现它有用。
下面是使用DataImportHandler将数据从mongodb导入Solr 4.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:

在您的solrhome文件夹中创建一个lib文件夹(其中包含bincollection1文件夹)
添加以下jar文件到lib文件夹。您可以从here下载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中声明数据配置文件。

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

第五步:

在路径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>

第六步:

假设solr(我使用的是8080端口)和mongodb正在运行,在浏览器中打开下面的链接http://localhost:8080/solr/dataimport?command=full-import,以便将数据从mongodb导入到solr。
导入的字段是_id、姓名和雇员编号(MongoDB),如id、姓名和雇员编号(Solr)。
您可以在http://localhost:8080/solr/query?q=*中看到结果

waxmsbnn

waxmsbnn2#

您可以尝试使用SolrMongoImporter,它要求您将2个库导入到您的solr项目中并创建一个data-config.xml。
如果您没有以下库,则可能需要在solrconfig.xml中导入这些库

<lib dir="../../../contrib/dataimporthandler/lib" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-dataimporthandler-.*\.jar" />
ogsagwnx

ogsagwnx3#

如果您已执行上述所有操作,但仍面临问题:检查是否在不同的位置有多个jar。
也就是说

  • {solr-home}/分配器/solr-dataimporthandler-8.10.0.jar
  • /服务器/库/solr-dataimporthandler-8.10.0.jar
  • {solr-home}/服务器/solr/内核/库/solr-dataimporthandler-8.10.0.jar

如果是这样,请从除了您在solrconfig.xml文件中配置的位置之外的所有位置删除jar文件。

相关问题