将数据库表导入到solr索引
-
编辑solrcofnig.xml添加处理器
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
-
创建一个名为data-config.xml的文件并保存如下内容到conf目录(也就是solrconfig.xml的目录)
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="user-name" password="password"/> <document> <entity name="id" query="select id,name,desc from mytable"> </entity> </document> </dataConfig>
-
编辑schema.xml文件,保证文件中有'id','name','desc'等fields。并更改data-config.xml的详细信息。
-
将JDBC的jar驱动文件放到
/lib文件夹中(tomcat/webapps/solr/WEB-INF/lib) -
运行命令 http://solr-host:port/solr/dataimport?command=full-import进行全量索引,每次进行全量索引时,会将数据清空,如果不想清空需要添加clean=false。例如http://solr-host:port/solr/dataimport?command=full-import&clean=false
在字段名和field明不同的时候添加索引
-
修改data-config.xml,如下所示
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="user-name" password="password"/> <document> <entity name="id" query="select id,name,desc from mytable"> <field column="id" name="solr_id"/> <field column="name" name="solr_name"/> <field column="desc" name="solr_desc"/> </entity> </document> </dataConfig>
-
写入solr的字段为'solr_id', 'solr_name', solr_desc'。所以schema.xml中必须要要这几个field。
-
运行 http://solr-host:port/dataimpor?command=full-import 建立索引
配置多个表建立索引
-
修改data-config如下:
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="user-name" password="password"/> <document> <entity name="outer" query="select id,name,desc from mytable"> <field column="id" name="solr_id"/> <field column="name" name="solr_name"/> <field column="desc" name="solr_desc"/> <entity name="inner" query="select details from another_table where id ='${outer.id}'"> <field column="details" name="solr_details"/> </entity> </entity> </document> </dataConfig>
-
schema.xml应该包含solr_details的字段
-
运行full-import
mysql配置
-
下载mysql的JDBC的jar,并拷贝到
/lib的文件夹 -
修改data-config为如下
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://ip:3306/dbname" user="username" password="password"/> <document name="products"> <entity ...... </entity> </document> </dataConfig>
DataImportHandler支持的命令
abort http://<host>:<port>/solr/dataimport?command=abort 终止命令
delta-import http://<host>:<port>/solr/dataimport?command=delta-import 增量
full-import http://<host>:<port>/solr/dataimport?command=full-import 全量
reload-config http://<host>:<port>/solr/dataimport?command=reload-config 重新加载配置
status http://<host>:<port>/solr/dataimport?command=status 状态查询