mysql - DataImportHandler 未在 solr admin 中索引 mysql 表

标签 mysql solr dataimporthandler

我正在尝试使用 DataImportHandler 在 solr 中索引 mysql 表,但它似乎没有索引

数据配置.xml

 <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
      <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://localhost/solr_tut" 
                  user="root" 
                  password=""/>
      <document>
        <entity name="product_id" 
                query="select product_id,name,description from products">
        </entity>
      </document>
    </dataConfig>

solrconfig.xml

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


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

当我尝试在 solr admin(http://localhost:8080/solr/dataimport?command=full-import) 中建立索引时,我得到了这个响应

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">19</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="Total Requests made to DataSource">1</str>
   <str name="Total Rows Fetched">4</str>
   <str name="Total Documents Skipped">0</str>
   <str name="Full Dump Started">2014-01-10 10:38:00</str>
   <str name="">
     Indexing completed. Added/Updated: 0 documents. Deleted 0 documents.
   </str>
   <str name="Committed">2014-01-10 10:38:00</str>
   <str name="Total Documents Processed">0</str>
   <str name="Time taken">0:0:0.33</str>
</lst>
<str name="WARNING">
This response format is experimental. It is likely to change in the future.
</str>
</response>

如果我搜索 (http://localhost:8080/solr/select?q=*:*),我得到 0 个结果。

更新-1: schema.xml

最佳答案

您只是错过了结果集中的列到文档字段的映射。您需要在 data-config.xmlentity 元素中执行此操作。

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
  <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost/solr_tut" 
              user="root" 
              password=""/>
  <document>
    <entity name="product_id" 
            query="select product_id,name,description from products">

 <!-- this is the place where you map the columns of your result set
      to fields of the new solr document -->

        <field column="PRODUCT_ID" name="id" />
        <field column="NAME" name="name" />
        <field column="DESCRIPTION" name="description" />

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

在您的情况下,您错过了一个重要的映射。 product_idid。 Solr 可以自动检测映射,如果模式中的列名称和字段名称相同,如 wiki 中所写

In the above example, there are mappings of fields to Solr fields. It is possible to totally avoid the field entries in entities if the names of the fields are same (case does not matter) as those in Solr schema.

但如前所述,在您的情况下情况并非如此。 product_idid 确实不同。由于您的 id 字段是必需的,因此这些文档不会进入索引。

可以找到更多信息in Solr's Wiki about the DataImportHandlerin the reference guide .

关于mysql - DataImportHandler 未在 solr admin 中索引 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21036694/

相关文章:

solr - 将数据导入solr时拆分多值字段

java - 使用 solr 索引和搜索 MySQL

if-statement - 在单个条件下对多个 ansible 任务进行分组

apache - Solr - DataImportHandler : Indexing failed. 回滚所有更改

Solr DataImportHandler - 转换 XML 字段

lucene - 仅重新索引在 solr 停机期间更改的模型的最佳方法是什么?

MySQL- 错误 1064 (42000)

php password_hash 和 password_verify 看了一遍还是不行

php - 为什么 fputcsv 会产生重复的列?

创建表中的 MySQL 日期格式