将数据库表导入到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)
在字段名和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。
配置多个表建立索引
修改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 状态查询