参考:https://gist.github.com/maxivak/3e3ee1fca32f3949f052
这次为了方便solr直接导入数据库中的数据,整理了一下流程。条件是solr已经成功安装且已经启动。
1、新增一个myproduct3的core:
/home/wuyonghu/solr/solr-6.4.2/bin/solr create -c myproduct3 -force
2、此时在界面上查看该core的详细信息如下:此时该core中是没有任何数据的。
3、进入到/home/wuyonghu/solr/solr-6.4.2/contrib/dataimporthandler目录下,创建一个lib文件夹(如果已经存在可以不用创建)
4、在该lib目录下添加java连接mysql的驱动包:至于驱动包怎么获取,直接从maven去拿就行。这里添加驱动包主要的作用是solr在执行导入的时候需要连接数据库。
5、进入到/home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3目录下,这里我们刚才创建的core,其目录结构信息如下:
6、修改myproduct3的solrconfig.xml文件,将
/home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf/solrconfig.xml
在如下位置,添加这两行配置信息。添加该配置的作用是让core知道驱动包的位置。
<lib dir="${solr.install.dir:../../../..}/contrib/dataimporthandler/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
7、继续在如下文件中添加dataimport。该配置信息的主要作用是告诉core,当进行数据导入的时候,根据哪个配置文件去获取数据源。
/home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf/solrconfig.xml
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
8、在/home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf目录下新增data-config.xml文件。其配置信息如下图所示:
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.10.102:3306/solr"
user="root"
password="root"/>
<document>
<entity name="product"
pk="id"
query="select id,name from products"
deltaImportQuery="SELECT id,name from products WHERE id='${dih.delta.id}'"
deltaQuery="SELECT id FROM products WHERE updated_at > '${dih.last_index_time}'"
>
<field column="id" name="id"/>
<field column="name" name="name"/>
</entity>
</document>
</dataConfig>
9、数据源和数据sql已经配置完成,接下来需要配置索引。
10、拷贝/home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf目录下的managed-schema文件:
cp /home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf/managed-schema /home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf/schema.xml
11、需要在schema.xml文件中配置data-config.xml中添加的field。由于data-config.xml中只有id和name两个field,而id是已经存在的,所以只需要添加name即可。
<field name="name" type="text_general" indexed="true" stored="true"/>
12、至此,配置已经完成了。接下来进行验证。
13、solr 的日志信息在/home/wuyonghu/solr/solr-6.4.2/server/logs/solr.log。打开该日志信息,查看日志详情:
14、登录到可视化界面,选择myproduct3(注意,需要重启)
15、查看信息如下:
16、确认完毕后,执行全量导入:
17、查看日志信息显示是否正常:如下日志信息显示已经成功添加了16条数据信息。
18、此时查看数据信息,确实已经添加了16条:
19、额外提一点,就是如果此时去查询,发现只能查到id
20、那么如果我想要索引到name呢?
1. add schema.xml file into your solr/core1/conf directory.
2. copy all content of managed-schema into schema.xml
3. add the new fields into schema.xml.
4. delete the managed-schema.xml
5. restart the solr it will create a managed-schema.xml and will move schema.xml to scheam.bkp