共计 4833 个字符,预计需要花费 13 分钟才能阅读完成。
这篇文章主要介绍“solr 增量导入数据怎么配置”,在日常操作中,相信很多人在 solr 增量导入数据怎么配置问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”solr 增量导入数据怎么配置”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!
简介: solr5.0 是一个独立的应用程序, 不再依赖其他 Web 服务器就能提供 Web 服务(这是和 4.x 版本最大的差异, 内置 jetty)。
启动 solr
solr 提供了启动脚本
bin/solr start
前台运行 bin/solr start -f
指定端口号 bin/solr start -p 8984(默认端口号 8983)查看 solr 状态 bin/solr status
结束 solr bin/solr stop -p 8984
后台管理地址 http://localhost:8984/solr
logging: 显示日志
Core Admin: core 就是搜索示例,放置索引。
java properties:查看 java 配置信息
Thread dump: 查看线程信息
创建一个搜索实例
{solr 安装路径}/server/solr/ 新建一个文件夹命名为 test
拷贝{solr 安装路径}/server/solr/configsets/sample_techproducts_configs 到 test 目录下
目录结构如下:
在后台采用如下配置:
配置 smartcn 分词期
第一步: 导入 smartcn 的 jar 包
在{solr 安装路径}/server/solr/test/conf/solrconfig.xml 加入如下代码
lib dir= ${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs/ regex= .*smartcn.*\.jar /lib
第二步: 配置分词器
1.solr5
在{solr 安装路径}/server/solr/test/conf/schema.xml 加入如下代码
fieldType name= text_cn >2.solr6
在 {solr 安装路径}/server/solr/test/conf/managed-schema 加入如下代码
fieldType name= text_cn >
第三步: 检查是否正确配置
如果可以搜索到 text_cn 即表示配置成功,最好用一段文字测试下分词结果。
配置数据导入 handler(用于数据导入,生成索引)
第一步:导入相关 jar 包(solr6 不需要这一步)
在{solr 安装路径}/server/solr/test/conf/solrconfig.xml 加入如下代码
lib dir= ${solr.install.dir:../../../..}/dist/ regex= solr-dataimporthandler-.*\.jar /
第二步: 配置 handler(solr6 不需要这一步)
在{solr 安装路径}/server/solr/test/conf/solrconfig.xml 加入如下代码
requestHandler name= /dataimport >
第三步: 配置数据源, 源数据与索引的隐射关系
在{solr 安装路径}/server/solr/test/conf/ 下新建 db-data-config.xml, 配置如下:
dataConfig
dataSource driver= com.mysql.jdbc.Driver url= jdbc:mysql://127.0.0.1:3306/appfamecms user= 1 password= 1 /
document name= articles
entity name= cms_article query= select id,title,content,create_time from cms_article
field column= id name= id /
field column= title name= title /
field column= content name= content /
field column= create_time name= create_time /
/entity
/document
/dataConfig
第四步:验证配置是否成功
在后台 core admin 中 reload 当前搜索实例的配置
then 在搜索实例的 dataimport 出现下图情形即为成功
导入数据
第一步: 导入 mysql 的 jar 包 下载地址:见参考资料 5
将 jar 放置到{solr 安装路径}/dist 目录下,
在{solr 安装路径}/server/solr/test/conf/solrconfig.xml 加入如下代码
lib dir= ${solr.install.dir:../../../..}/dist/ regex= mysql.*\.jar /
第二步: 验证配置(配置见第六点)
如果显示 indexing completed. Added/Updated: 1847 documents. Deleted 0 documents
documents 的个数大于 0 说明我们成功导入 x 条数据到 solr 中
设置 field 的索引方式
查询
更新索引
删除索引
优化
定时完整数据重新导入
crontab -e
curl -d command=full-import clean=true commit=true optimize=true wt=json indent=true verbose=false debug=false http://ip:port/solr/{core 名称}/dataimport
14. 增量导入数据配置
修改 db-data-config.xml 添加 deltaQuery、deltaImportQuery、pk 三个属性
1.pk 设置主键字段名称,该字段必须在 managed-schema 配置过 uniqueKey 字段名 /uniqueKey
2.deltaQuery 该属性用于查询主键字段值
3.deltaImportQuery 该属性用于查询需要被索引的所有字段的 sql
dataConfig
dataSource driver= com.mysql.jdbc.Driver url= jdbc:mysql://127.0.0.1:3306/appfamecms user= 1 password= 1 /
document name= articles
entity name= cms_article query= select id,title,content,create_time from cms_article pk= id deltaQuery= select id from cms_article where id ${dataimporter.delta.id} deltaImportQuery= select id,title,content,create_time from cms_article where id={$dataimporter.delta.id}
field column= id name= id /
field column= title name= title /
field column= content name= content /
field column= create_time name= create_time /
/entity
/document
/dataConfig
15. 配置定时数据更新
16. 搜索词建议
https://cwiki.apache.org/confluence/display/solr/Suggester
更新中~~~
错误信息:
1. 配置好的 solr 没有任何数据,启动时报错:SolrException: Invalid Number: MA147LL/A
这不是你的错,你可能是把 solr schema.xml 的 id 设置成了 int 类型,设置成 int 类型没什么错,但是 solr 启动是会扫描 conf 目录下的 elevate.xml 文件,这个文件中定义的 id 值是 MA147LL/ A 所以就会出现异常 SolrException: Invalid Number: MA147LL/A
解决问题的方法是修改 elevate.xml 文件,将其中的 id 值设置为数字,就可以了。
dataConfig
dataSource driver= com.mysql.jdbc.Driver url= jdbc:mysql://127.0.0.1:3306/appfamecms user= 1 password= 1 /
document name= articles
entity name= cms_article query= select id,title,content,create_time from cms_article pk= id deltaQuery= select id from cms_article where id ${dataimporter.delta.id} deltaImportQuery= select id,title,content,create_time from cms_article where id={$dataimporter.delta.id}
field column= id name= id /
field column= title name= title /
field column= content name= content /
field column= create_time name= create_time /
/entity
/document
/dataConfig
2. 全量导入数据报:
Caused by: java.sql.SQLException: Illegal value for setFetchSize().
在 db-data-config.xml 的 dataSource 标签添加 batchSize 属性并赋值 - 1 即可,修改后的内容
dataConfig
dataSource driver= com.mysql.jdbc.Driver url= jdbc:mysql://127.0.0.1:3306/appfamecms user= 1 password= 1 batchSize= -1 /
document name= articles
entity name= cms_article query= select id,title,content,create_time from cms_article pk= id deltaQuery= select id from cms_article where id ${dataimporter.delta.id} deltaImportQuery= select id,title,content,create_time from cms_article where id={$dataimporter.delta.id}
field column= id name= id /
field column= title name= title /
field column= content name= content /
field column= create_time name= create_time /
/entity
/document
/dataConfig
到此,关于“solr 增量导入数据怎么配置”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!