【问题标题】:apache solr data import from mysql从mysql导入apache solr数据
【发布时间】:2014-02-26 07:20:29
【问题描述】:

我不知道出了什么问题,但我无法从 solr 数据导入中获取数据。

db-data-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> 

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

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>

知道怎么了。

【问题讨论】:

  • 日志中写了什么?您的容器(Jetty、Tomcat)还是控制台?
  • job_title 是 Solr 架构中的唯一字段吗?如果不是,那么您在导入数据时可能会遇到重复异常错误。

标签: solr


【解决方案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 界面通过http://hostname:8983/solr/#/corename/dataimport//dataimport 执行导入

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

祝你好运。

【讨论】:

    【解决方案2】:

    修改网址并检查。

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

    最好提供 URL “jdbc:mysql://IP:PORT/database”

    【讨论】:

    • 现在我得到 -> 索引已完成。添加/更新:0 个文档。已删除 0 个文档。
    • 我猜你也需要修改你的查询。提及列名而不是 *
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 2017-02-13
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多