我对Solr还是新手,实际上我尝试过用Solr手工进行数据库表索引,即创建一个新的数据-config.xml并从Solr webUI运行完整导入,成功地做到了这一点。
但是现在我需要在Java中做同样的事情。因此,我需要知道以下使用Java的情况:
实际上,对于数据导入,我们编写了一个配置文件,如下所示
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test_db"
user="root"
password="cloudera"/>
<document>
<entity name="emp"
query="select id,name from emp">
<field column="id" name="id"/>
<field column="name" name="name"/>
</entity>
</document>
</dataConfig>我们将在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> 但是我的要求是,我不想像上面那样配置任何XML文件,我只想用Java来做所有的配置,所以我需要设置Java代码本身在上面的XML中提供的所有配置,即如下所示
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("Datasource","JdbcDataSource")
params.set("driver","com.mysql.jdbc.Driver")
params.set("url","jdbc:mysql://localhost:3306/test_db")
params.set("user","cloudera")
params.set("password","cloudera")
params.set("query","select * from emp"),etc.这是我第三次发帖这个问题,但没有人给我确切的答案,或者只是告诉我,这是否可能?
发布于 2017-11-28 11:40:47
有点迟,但这是可能的,至少与Solr 7.1 (没有尝试以前的版本)。
如果您在http://yoursolrhostsolr/#/yourcore/dataimport//dataimport上检查,可以通过单击调试模式执行带有自定义数据配置的导入。
通过查看日志,您可以看到管理接口发送给solr的命令。它调用作为参数传递dataConfig.xml文件的dataConfig.xml处理程序。
因此,可以用SolrJ这样做:
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("qt", "/dataimport");
params.set("command", "full-import");
params.set("dataConfig", <the data-import xml as string>);
solrClient.query(params);通过传递一个dataConfig,dataImportHandler忽略了已配置的数据-import.xml.xml
对于那些使用Solr8.2.0的用户,链接是http://yoursolrhostsolr/#/yourcore/dataimport//import
https://stackoverflow.com/questions/31446644
复制相似问题