从mysql导入apache solr数据

时间:2014-02-26 07:20:29

标签: solr

我不知道什么是错的,但我无法从solr数据导入中获取数据。

DB-数据-config.xml中

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
    <dataSource name="data_so" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/delance" user="user" password="user"/>
    <document>
    <entity name="table_name" query="select * from table_name" >
    <field name="solr_field_map" column="table_column_name" />
    <field name="name" column="name" />
    </entity>
    <entity dataSource="data_so" name="Jobs" query="select job_title from Jobs">
         <field name="job_title" column="job_title" />
    </entity>
    </document>
</dataConfig> 

schema.xml中

   <!-- Jobs Field-->
    <field name="job_title" type="string" indexed="true" stored="true"/> 

solrconfig.xml中

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

但是当我尝试使用以下网址运行数据导入时

http://localhost:8080/solr/dataimport?command=full-import

我一直都这样: -

<response>
<lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">0</int>
</lst>
<lst name="initArgs">
     <lst name="defaults">
         <str name="config">db-data-config.xml</str>
     </lst>
</lst>
    <str name="command">full-import</str>
    <str name="status">idle</str>
    <str name="importResponse"/>
    <lst name="statusMessages">
         <str name="Time Elapsed">0:14:54.768</str>
         <str name="Total Requests made to DataSource">1</str>
         <str name="Total Rows Fetched">0</str>
         <str name="Total Documents Processed">0</str>
         <str name="Total Documents Skipped">0</str>
         <str name="Full Dump Started">2014-02-26 12:30:42</str>
         <str name="">Indexing failed. Rolled back all changes.</str>
         <str name="Rolledback">2014-02-26 12:30:42</str>
    </lst>
    <str name="WARNING">This response format is experimental.  It is likely to change in the future.</str>
</response>

知道什么是错的。

2 个答案:

答案 0 :(得分:1)

我认为您必须执行以下步骤才能使数据导入生效。

1)包括您正在使用的数据库的JDBC连接器,即MySQL,DB2等。在您的核心下的 solrconfig.xml 文件中包含以下JAR。

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

以上适用于DB2服务器。

还要确保在solrconfig.xml文件中有以下requestHandler

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

2)通过连接测试确保JDBC连接实际成功,并验证SELECT查询是否正确。

3)编辑您正在使用的核心中的data-config.xml

<dataConfig>
    <dataSource driver="com.ibm.db2.jcc.DB2Driver"
    user="username"
    url="jdbc:db2://hostname:50000/DATABASE_NAME"
    password="password"
    autoCommit = "true"/>
        <document name="customers">
            <entity name="customers" query="
                    SELECT id, customer_name as street_addr FROM customers
                " >

                <field column="id"       name="id"/>
                <field column="name"             name="name" />

            </entity>
        </document>
</dataConfig>

4)确保您在导入字段列表中有一个唯一字段,否则您必须自己创建一个uuid。

5)使用SOLR UI interace通过http://hostname:8983/solr/#/corename/dataimport//dataimport

执行导入

SOLR专家,如果我忘了什么,请告诉我。

祝你好运。

答案 1 :(得分:0)

修改网址并检查。

url="jdbc:mysql://localhost:3306/delance"

提供URL“jdbc:mysql:// IP:PORT / database”是一个很好的做法