无法使用 SOLR DataImportHandler 从 DB 获取任何行

bto*_*ive 5 mysql solr dataimporthandler

我第一次尝试使用 SOLR DIH 索引数据库数据时,有一个简单的测试数据库设置。不幸的是,我每次都从完全导入中得到以下结果:

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">15</int>
</lst>
<lst name="initArgs">
<lst name="defaults">
<str name="config">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:0:2.187</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">2011-03-06 21:30:07</str>
<str name="">Indexing failed. Rolled back all changes.</str>
<str name="Rolledback">2011-03-06 21:30:07</str>
</lst>
<str name="WARNING">
This response format is experimental.  It is likely to change in the future.
</str>
</response>
Run Code Online (Sandbox Code Playgroud)

我的 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>
Run Code Online (Sandbox Code Playgroud)

我的 data-config.xml 包含以下内容:

<dataConfig>
<dataSource type="JdbcDataSource" 
          driver="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:8889/Dev1" 
          user="root" 
          password="***"/>
<document>
<entity name="business_profile" 
        query="select business_id,business_name,address1,address2,city,state,zip from business_profile">
</entity>
</document>
</dataConfig>
Run Code Online (Sandbox Code Playgroud)

schema.xml 字段定义:

<field name="business_id" type="int" indexed="true" stored="true"/>
<field name="business_name" type="string" indexed="true" stored="true"/>
<field name="address1" type="string" indexed="true" stored="true"/>
<field name="address2" type="string" indexed="true" stored="true"/>
<field name="city" type="string" indexed="true" stored="true"/>
<field name="state" type="string" indexed="true" stored="true"/>
<field name="zip" type="string" indexed="true" stored="true"/>
Run Code Online (Sandbox Code Playgroud)

如果对数据源的总请求数显示为“1”,这是否意味着 JDBC 驱动程序配置正确并且此时可能存在 MySQL 权限问题,或者不一定?

我玩过 DIH 开发控制台试图取回一些东西,但它总是 1 个请求和 0 行,这让我认为它是 JDBC 或 mySQL 权限。我已经排除了数据库名称、端口号和用户/密码,但也许 JDBC 驱动程序设置不正确..?

谢谢


这是我从 solr 日志中得到的信息

0:0:0:0:0:0:0:1%0 -  -  [07/03/2011:17:50:41 +0000] "GET /solr/dataimport?command=full-import&mode=debug HTTP/1.1" 200 853 
0:0:0:0:0:0:0:1%0 -  -  [07/03/2011:17:50:47 +0000] "GET /solr/dataimport?command=full-import&mode=debug HTTP/1.1" 200 851 
0:0:0:0:0:0:0:1%0 -  -  [07/03/2011:17:51:03 +0000] "GET /solr/dataimport?command=full-import&mode=debug HTTP/1.1" 200 853 
0:0:0:0:0:0:0:1%0 -  -  [07/03/2011:17:51:13 +0000] "GET /solr/dataimport?command=full-import&mode=debug HTTP/1.1" 200 852 
0:0:0:0:0:0:0:1%0 -  -  [07/03/2011:17:51:14 +0000] "GET /solr/dataimport?command=full-import&mode=debug HTTP/1.1" 200 852 
Run Code Online (Sandbox Code Playgroud)

nik*_*500 0

请直接在 MySQL 中运行 data-config.xml 中的查询并检查是否返回任何行。

另外,请检查服务器的错误日志(如果您使用的是 Tomcat,则为 catalina.out)并发布其中记录的所有错误消息。