solr - DataImportHandler 无法添加/更新

标签 solr add dataimporthandler

我试图说服 solr 执行 sqlite 数据库的批量导入。 我遵循 Solr-Wiki 的所有说明。 我将 DataImportHandler 配置为通过 jdbc 成功打开该数据库,我可以开始导入 http://localhost:8080/solr/dataimport?command=full-import 但无论我做什么,DIH 都没有添加任何文档,即使它似乎索引了数据库

结果

    <str name="command">full-import</str>

<str name="Total Requests made to DataSource">1</str>
<str name="Total Rows Fetched">**14**</str>
<str name="Total Documents Skipped">0</str>
<str name="Full Dump Started">2012-04-06 01:14:30</str>
<str name="">**Indexing completed**. **Added/Updated: 0 documents**. Deleted 0 documents.</str>
<str name="Committed">2012-04-06 01:14:32</str>
<str name="Optimized">2012-04-06 01:14:32</str>
<str name="Total Documents Processed">0</str>

我在 Oracle 数据库中使用 emp 表

数据配置.xml

    <dataConfig>
<dataSource name="jdbc" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@//localhost:1521/ORCL" user="scott" password="tiger"/>
<document>
<entity name="emp" query="select EMPNO, ENAME from EMP">
            <field column="EMPNO" name="empno" />
            <field column="ENAME" name="ename" />
</entity>
</document>
</dataConfig>

架构.xml

<field name="empno" type="int" indexed="true" stored="true"/>
<field name="ename" type="string" indexed="true" stored="true"/>

好像没有索引,但是没有存储索引数据

知道为什么会出现这个问题吗?

编辑 1 日志显示警告消息,如..

    WARNING: Error creating document : SolrInputDocument[{ename=ename(1.0)={SMITH}, empno=empno(1.0)={7369}}]
org.apache.solr.common.SolrException: [doc=null] missing required field: id
    at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:346)
    at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:60)
    at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:115)
    at org.apache.solr.handler.dataimport.SolrWriter.upload(SolrWriter.java:73)
    at org.apache.solr.handler.dataimport.DataImportHandler$1.upload(DataImportHandler.java:293)
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:636)
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:268)
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:187)
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:359)
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:427)
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:408)

接着就是那种日志

此警告消息出现在日志的末尾

    2012. 4. 6 오후 12:12:25 org.apache.solr.update.processor.LogUpdateProcessor finish
INFO: {deleteByQuery=*:*,add=[(null), (null), (null), (null), (null), (null), (null), (null), ... (14 adds)],optimize=} 0 0

我觉得missing required field: id跟配置有关系 架构.xml

<uniqueKey>id</uniqueKey> 

但是删除后,我收到了这条消息

HTTP 状态 500 - solr 配置中的严重错误。检查您的日志文件以获取有关可能出错的更多详细信息。如果你想让solr在配置错误后继续,在solr.xml中改成:false ---------------------------------- -------------------------- org.apache.solr.common.SolrException: QueryElevationComponent 要求架构具有使用 StrField 实现的 uniqueKeyField org.apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:158) 在 org.apache.solr.core.SolrResourceLoader.inform

有什么建议吗?

最佳答案

尝试:

    <entity name="emp" query="select EMPNO, ENAME from EMP">
        <field column="EMPNO" name="id" />
        <field column="ENAME" name="ename" />    

在data-config.xml中放回去:

    <uniqueKey>id</uniqueKey>    

在 schema.xml 中也让字段 id。

或者你可以简单地替换:

    <uniqueKey>id</uniqueKey>    

与:

    <uniqueKey>epno</uniqueKey>        

希望能奏效。

关于solr - DataImportHandler 无法添加/更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032532/

相关文章:

mysql - Solr 搜索精确的短语/子字符串

Python:为列表中的所有元素添加相同的前缀

mysql - 使用 Solr 数据导入处理程序将多值字段从 mySQL 导入 Solr

带有源的 solr CopyField - 两个字段

ruby-on-rails - 比 Apache Solr 更快的搜索平台/索引引擎?

dictionary - 如何在 Solr 的 POJO 中存储 map ?

Python 'add' 函数问题 : why won't this work?

java.lang.Number 没有实现 "+"或任何其他运算符?

mysql - 如何使用 Solr 数据导入处理程序来索引 MySQL 表?

mysql - Solr 索引我的 SQL 时间戳或日期时间字段