使用dataimport工具,直接将数据库表索引到SOLR中
上篇文章创建了一个简单的helloword核心
https://blog.youkuaiyun.com/qq_26229005/article/details/87913225
这里为helloworld核心增加数据库导入到solr索引的内容
步骤1:编辑solrconfig.xml以添加请求处理程序
cd /var/solr/data/helloworld/conf
vi solrconfig.xml 增加
在<config>元素下增加
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
步骤2:创建一个data-config.xml文件,如下所示,并将其保存到conf dir
vi data-config.xml 增加如下内容,这里我以导入oracle的一个表为例子。
<dataConfig>
<dataSource type="JdbcDataSource"
driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@//"
user="*****"
password="******"/>
<document>
<entity name="id"
query="select id,name from CLASS_TYPE">
</entity>
</document>
</dataConfig>
步骤3:确保solr架构(schema)具有字段“id”、“name”。在data-config.xml中更改适当的详细信息
默认的唯一的主键一般是id,这里我们使用控制台界面的创建。
步骤4:将JDBC驱动程序JAR文件放到<solr home>/lib目录中。
cd /var/solr/data
mkdir lib
cd lib
cp //ojdbc6.jar .xx
service solr restart(非必须,可以使用界面的上的configuration的reload。待验证)
步骤5:运行命令
http://solr-host:port/solr/dataimport?command=full-import
请记住,每次执行完全导入时,都会清除索引。如果不希望发生这种情况,请添加clean=false。例如:
http://solr-host:port/solr/dataimport?command=full-import&clean=false
也可以通过界面测试:
用不同的名称为字段编制索引
步骤:1更改数据配置(data-config.xml)如下:
<dataConfig>
<dataSource type="JdbcDataSource"
driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@//"
user="xxx"
password="xxx"/>
<!-- <document>
<entity name="id"
query="select id,name,section from CLASS_TYPE">
<field column="id" name="solr_id"/>
<field column="name" name="solr_name"/>
<field column="section" name="solr_section"/>
</entity>
</document>
-->
<document>
<entity name="classType"
query="select id,name,section,subject from CLASS_TYPE">
<!-- <field column="id" name="id"/>
<field column="name" name="name_txt_cz"/>
-->
<field column="ID" name="id"/>
<field column="NAME" name="solr2_name"/>
<field column="SECTION" name="solr2_id"/>
<field column="SUBJECT" name="solr_id"/>
</entity>
</document>
</dataConfig>
注意:field里column的大小写配成和数据库的schema一致
第2步:这一次字段将写入solr字段'solr_id'、'solr2_name'、'solr2_id。schema中必须包含这些字段。
第3步执行导入操作
http://solr-host:port/dataimpor?command=full-import
将多个表中的数据索引到solr中
步骤1:在data-config.xml
<dataConfig>
<dataSource type="JdbcDataSource"
driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@t"
user=""
password="“/>
<document>
<entity name="classType"
query="select id,name,section,subject from CLASS_TYPE">
<!-- <field column="id" name="id"/>
<field column="name" name="name_txt_cz"/>
-->
<field column="ID" name="id"/>
<field column="NAME" name="solr2_name"/>
<field column="SECTION" name="solr2_id"/>
<field column="SUBJECT" name="subject_txt_cz"/>
<entity name="inner"
query="select DETAIL_NAME,DETAIL_CODE FROM RMS_DICTIONARY_DETAIL WHERE DICTIONARY_CODE='subject' and DETAIL_CODE='${classType.SUBJECT}'">
<field column="DETAIL_NAME" name="subjectName_txt_cjk"/>
</entity>
</entity>
</document>
</dataConfig>
步骤2:这是使用了动态域*_txt_cjk。
步骤3:运行完全导入命令。