前提:已创建一个core
solrconfig.xml中进行操作,但因为该文件存在于用户自己创建的core/conf目录下
使用solr自带jetty启动
或使用Tomcat部署启动
在solrconfig.xml文件中添加或修改name为dataimport
<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文件
Mysql
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<!-- 数据库信息 -->
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://xxxxxxx:3306/xxx"
user="xxx" password="xxxx"/>
<document>
<!-- document实体 -->
<entity name="item" query="SELECT id,name,price FROM gm_solr">
<!-- 数据库字段映射solr字段 -->
<field column="id" name="id"/>
<field column="name" name="item_name"/>
<field column="price" name="item_price"/>
</entity>
</document>
</dataConfig>
或Oracle
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@xxxx.xxxx.xxxx.xxxx:xxxx:xxx" user="xxx" password="xx"/>
<document>
<entity name="solrtest" query="select menu_code as id,APPL_CODE,MENU_CODE,TITLE,URL from CORE_MENU t where url is not null and url !=' '">
<field column="id" name="id" />
<field column="APPL_CODE" name="APPL_CODE" />
<field column="MENU_CODE" name="MENU_CODE" />
<field column="TITLE" name="TITLE" />
<field column="URL" name="URL" />
</entity>
</document>
</dataConfig>
另外,如需使用除 id 外的字段,需在同级目录下 managed-schema 文件中配置 field
,id 字段在配置中是默认存在的
所以在 field 区域配置, type 属性可以为字符型 string ,也可以使用分词类型
<field name="item_name" type="string" indexed="true" stored="true"/>
<field name="item_price" type="string" indexed="true" stored="true"/>
quey中填写与下方field对应的SQL,上方两个设置非同一项目
进入Solr前台页面,在Dataimport中就有
点Execute可以执行查询并插入,可以通过query查看插入的数据
如果点击Execute后等一会Refresh Status后没有导入成功的提示,就需要看一下后台是否报错(Tomcat控制台等),不管是Mysql还是Oracle都需要驱动以及solr的数据导入的jar,放入索引库与conf和data平行的lib(没有可新建)文件夹下