我已经使用无模式模式链接了dataimporthandler。将config-param“add-unknown-fields-to-the-schema”添加到dataimporthandler,如下所示,并配置所有内容。 Dataimporthandler导入数据并且运行良好,但solr无法将未知字段添加到模式。它仅适用于现有字段。这是dataimporthandler对请求的回答。
{
"responseHeader": {
"status": 0,
"QTime": 0
},
"initArgs": [
"defaults",
[
"update.chain",
"add-unknown-fields-to-the-schema",
"config",
"db-data-config.xml"
]
],
"command": "status",
"status": "idle",
"importResponse": "",
"statusMessages": {
"Total Requests made to DataSource": "1",
"Total Rows Fetched": "273",
"Total Documents Processed": "273",
"Total Documents Skipped": "0",
"Full Dump Started": "2016-06-21 13:29:48",
"": "Indexing completed. Added/Updated: 273 documents. Deleted 0 documents.",
"Committed": "2016-06-21 13:29:49",
"Time taken": "0:0:0.543"
}
}
你可以看到我的配置没问题。下面是solrconfig文件。
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="update.chain">add-unknown-fields-to-the-schema</str>
<str name="config">db-data-config.xml</str>
</lst>
我希望能够从数据库中添加未知字段。
答案 0 :(得分:2)
DataImportHandler在无模式模式之前。如果您尝试将其自动映射(列名称为字段名称),则会实现它以检查模式中是否存在该字段以了解如何映射它。通过这种方式,您只能在架构中定义所需的字段,而忽略其余的字段。它不知道无模式模式可以弥补这一点,也不提供任何替代的字段排除机制(如果接受每个字段是默认值,则需要这种机制。)
如果在DIH中明确定义了字段映射,它应该可以工作。
如果您真的不知道自己将拥有哪个字段,那么最好从数据库内容生成CSV,XML或JSON文件并将其推送到Solr,而不是使用DIH将其拉出来。