概述
一、anyq容器host模式运行
由于anyq容器,后期还会有其他端口需要访问,比如solr的webapp页面端口就是8900,等等。所以可以采用host方法run一个新的容器。
#提交anyq镜像,生成新镜像anyq-host,并run新的anyq-host容器
docker stop anyq
docker commit anyq anyq-host
#使用--privileged=true和/usr/sbin/init参数确保在容器中可以用systemctl命令
docker run -itd --name=anyq-host --privileged=true --network=host anyq-host /usr/sbin/init
docker exec -it anyq-host /bin/bash
二、在容器anyq-host中启动solr
##5.进入home目录
cd home
##6.配置java环境
export PATH=`pwd`/jdk1.8.0_171/bin:$PATH
##7.进入AnyQ/build目录
cd AnyQ
cd build
##8.启动solr
sh solr_script/anyq_solr.sh solr_script/sample_docs
三、在浏览器中查看solr的webapp面板
1.打开面板
打开浏览器,输入http://192.168.99.100:8900/solr/即可。192.168.99.100是win7中docker-machine默认ip地址。*nix(或Ubuntu桌面版)中应该是http://127.0.0.1:8900/solr/。如下图所示,表明solr运行成功。
2.通过左下角选择器选择集合collection1
3.在Documents选项卡中上传文档(上传数据)
4.在Query选项卡中查询数据
以上演示solr数据的上传及查询,这也表明solr可以动态添加数据。solr对于大型索引,优化需要一些时间才能完成,但是通过将许多小段文件合并为一个更大的文件,搜索性能将会提高。不建议一条一条添加数据,可以合并一次性并进行优化操作,对于搜索性能是好的。
四、solr 从数据库导入数据,全量索引和增量索引
此处内容主要参考博客:https://blog.csdn.net/u013378306/article/details/50761610及相关solr知识。
1.在docker或者宿主机中安装数据库
由于我是在云服务器CentOS7.2中测试的,服务器中安装有小皮面板(phpstudy linux),确实好用,必须给小皮打个广告,安装mysql那是一键安装并默认配置好,个性化配置也方便。
设置字段如下:其中数据初始如下:
2.更改solr配置文件/home/AnyQ/build/solr-4.10.3-anyq/example/solr/collection1/conf
/solrconfig.xml
新增如下代码:
<!-- full-import & delta-import -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
<requestHandler name="/deltaimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">delta-data-config.xml</str>
</lst>
</requestHandler>
其中第一段是专门做全量索引的,第二段做增量索引(主要是靠DataImportHandler类实现)。
3.新增/home/AnyQ/build/solr-4.10.3-anyq/example/solr/collection1/conf/data-config.xml
<dataConfig>
<dataSource name="jdbc" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/solr_faq?zeroDateTimeBehavior=convertToNull&characterEncoding=utf8&useUnicode=true"
user="admin" password="25ff140a16466a4b"/>
<document name="faq">
<entity name="FAQ" pk="id"
query="select * from faq limit ${dataimporter.request.length} offset ${dataimporter.request.offset}"
transformer="RegexTransformer">
<field column="id" name="id" />
<field column="question" name="question" />
<field column="answer" name="answer" />
<field column="updata_time" name="updata_time" />
</entity>
</document>
</dataConfig>
其中solr_faq是库名,faq是表名。field 是列名,其中updata_time存储更新时间,如果有增删查改则更新updata_time值,随后增量索引会查询updata_time大于上一次更新的时间值进行更新,以此达到增量索引的目的,updata_time需要自己写代码维护。
4.新增/home/AnyQ/build/solr-4.10.3-anyq/example/solr/collection1/conf/delta-data-config.xml
<dataConfig>
<dataSource name="jdbc" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/solr_faq?zeroDateTimeBehavior=convertToNull&characterEncoding=utf8&useUnicode=true" user="admin" password="25ff140a16466a4b"/>
<document name="faq">
<entity name="FAQ" pk="id"
query="select * from faq"
deltaImportQuery="select * from faq where id='${dih.delta.id}'"
deltaQuery="select id from faq where updata_time > '${dih.last_index_time}'"
transformer="RegexTransformer">
<field column="id" name="id" />
<field column="question" name="question" />
<field column="answer" name="answer" />
<field column="updata_time" name="updata_time" />
</entity>
</document>
</dataConfig>
5…修改/home/AnyQ/build/solr-4.10.3-anyq/example/solr/collection1/conf/schema.xml文件,定义field索引配置
#id这一项为anyq原本就有
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
#下面三项为新增
<field name="question" type="text_multi_lang" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="answer" type="string" indexed="false" stored="true" required="true" multiValued="false"/>
<field name="updata_time" type="text_ansj" indexed="true" stored="true" required="false" multiValued="false" />
6.补充solr的war包缺少的部分jar包。
需要把mysql的mysql-connector-java-5.1.48-bin.jar,以及solr项目中/home/AnyQ/build/solr-4.10.3-anyq/dist目录下的jar包都放到solr的web站点中(路径为/home/AnyQ/build/solr-webapp/webapp/WEB-INF/lib)
五、测试全量及增量索引
1.启动solr服务
启动solr会自动读取配置文件,面板会出现Dataimport。
#在/home/AnyQ/build目录执行以下命令
cd build
#solr停止命令
[root@VM_0_14_centos build]$ sh solr_script/solr_deply.sh stop solr-4.10.3-anyq 8900
solr[8900] stop success!
#solr启动命令
[root@VM_0_14_centos build]$ sh solr_script/solr_deply.sh start solr-4.10.3-anyq 8900
nohup: appending output to 'nohup.out'
solr[8900] start success!
2.打开浏览器solr面板,全量索引。
此时,点击Dataimport出现如下面板表示配置成功。在4框内输入参数将会对faq表中符合要求的数据全部导入索引,点击5框Execute执行,出现6框所示表明导入成功。
2.查询是否导入
如图,可以看到数据已经导入并且上方红框内的网址即是查询网址。
3.可以修改faq表中数据后,执行delta-import查看效果。此处不再演示。
4.与面板操作对应的网址是
全量:http://solr.xxxx.com:8900/solr/collection1/dataimport?command=full-import&commit=true&clean=false&offset=0&length=100000(其中0到100000的数据建立索引)
增量:http://solr.XXXX.com:8900/solr/collection1/deltaimport?command=delta-import&entity=FAQ
其中solr.xxxx.com代指部署solr服务的服务器的IP/域名。
最后
以上就是野性钻石为你收集整理的AnyQ如何配置solr动态读取数据库——AnyQ系列之二的全部内容,希望文章能够帮你解决AnyQ如何配置solr动态读取数据库——AnyQ系列之二所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复