9

我是 SOLR 和 MONGODB 的新手。

我正在尝试使用 DataImportHandler 将 mongodb 中的数据索引到 SOLR 中,但我找不到需要遵循的确切步骤。

您能否帮助我获得使用 DataImportHandler 将 MongoDB 索引到 Solr 的确切步骤?

SolrVersion - solr-4.6.0

MongoDB 版本 - 2.2.7

4

3 回答 3

25

回答晚了,但认为人们可能会觉得它有用。

以下是使用 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文件夹。您可以从这里下载 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步:

通过在标签内添加以下代码,在 solrconfig.xml 中声明数据配置文件<config> </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)

数据配置.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 和 EmpNumber(MongoDB) 作为 id、Name 和 EmployeeNumber(Solr)。

你可以看到结果 http://localhost:8080/solr/query?q=*

于 2015-01-22T13:48:43.023 回答
3

您可以尝试使用SolrMongoImporter,它要求您将 2 个库导入您的 solr proyect 并创建一个 data-config.xml。

如果没有,您可能需要在 solrconfig.xml 中导入以下库

  <lib dir="../../../contrib/dataimporthandler/lib" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-dataimporthandler-.*\.jar" />
于 2014-02-11T17:54:20.680 回答
0

如果您遵循了上述所有操作但仍然面临问题:检查您是否在不同位置有多个罐子。

IE

  • {solr-home}/dist/solr-dataimporthandler-8.10.0.jar
  • {solr-home}/server/libs/solr-dataimporthandler-8.10.0.jar
  • {solr-home}/server/solr/core/libs/solr-dataimporthandler-8.10.0.jar

如果是这样,请从除您在文件中配置的位置之外的任何地方删除 jarsolrconfig.xml文件。

于 2021-11-23T12:24:13.217 回答