linux系统搭建solr7.2服务
个人分类: solr
1.安装环境的jdk是jdk1.8,tomcat9(本人环境)。
2.下载solr7.2,链接http://archive.apache.org/dist/lucene/solr/7.2.1/。上传到linux并解压。
3.在tomcat,webapps目录下创建solr7目录,并将solr-7.2.1/server/solr-webapp/webapp/*目录下的所有内容拷贝过去。
4.将需要的jar包导入到WEB-INF/lib/下。
[[email protected] solr7]# cp -r /usr/local/solr-7.2.0/server/solr-webapp/webapp/* ./
[[email protected] solr7]# cp -r /usr/local/solr-7.2.0/server/lib/ext/* ./WEB-INF/lib/
[[email protected] solr7]# cp -r /usr/local/solr-7.2.0/server/lib/metrics*.* ./WEB-INF/lib/
[[email protected] solr7]# cp -r /usr/local/solr-7.2.0/dist/solr-dataimporthandler-* ./WEB-INF/lib/
5.在local目录下创建solrhome7,将solr-7.2.0/server/solr/*目录下的所有内容拷贝过去。
[[email protected] solr7]# cd ../../../
[[email protected] local]# mkdir solrhome7
[[email protected] local]# cp -r /usr/local/solr-7.2.0/server/solr/* ./solrhome7
6.修改/usr/local/tomcat9-solr7/webapps/solr7/WEB-INF/web.xml文件,指定solrhome7的位置,并注释security-constraint权限内容。
...
<env-entry
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solrhome7</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
...
<!--
<security-constraint>
<web-resource-collection>
<web-resource-name>Disable TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Enable everything but TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method-omission>TRACE</http-method-omission>
</web-resource-collection>
</security-constraint>
-->
...
7.启动tomcat(注意端口冲突以及端口限制问题),访问http://ip:port/solr7/index.html#。看到管理页面说明安装成功。
8.解决日志不能正常显示问题。
[[email protected] WEB-INF]# mkdir classes
[[email protected] WEB-INF]# cp /usr/local/solr-7.2.0/server/resources/log4j.properties ./classes/
9.添加核心。
name:自定义的名字,建议和instanceDir保持一致
instanceDir:solrhome7目录下的示例类目
dataDir:默认填data即可
config:指定配置文件,/usr/local/solrhome7/new_core/conf/solrconfig.xml
schema:指定schema.xml文件,new_core/conf/schema文件(实际上是managed-schema文件)
注意!在schema.xml下面有一个感叹号!
instanceDir
and dataDir
need to exist before you can create the core
如果你不管他,直接点击Add Core会提示solrconfig.xml文件找不到
解决方法:
[[email protected] new_core]# mkdir conf
[[email protected] new_core]# cp -r /usr/local/solr-7.2.0/server/solr/configsets/_default/conf/* ./conf/
[[email protected] solrhome7]# cp -r /usr/local/solr-7.2.0/contrib/ ./
[[email protected] solrhome7]# cp -r /usr/local/solr-7.2.0/dist/ ./
检查/usr/local/solrhome7/new_core/conf/solrconfig.xml和contrib目录,dist目录的相对位置
...
<lib dir="${solr.install.dir:..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:..}/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="${solr.install.dir:..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:..}/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="${solr.install.dir:..}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:..}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:..}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:..}/dist/" regex="solr-velocity-\d.*\.jar" />
...
10.重启服务即可正常创建Core,然后instanceDir文件夹(new_core)里会自动生成一个core.properties文件。
name=new_core
config=solrconfig.xml
schema=schema.xml
dataDir=data
第二次创建core,就不用这么麻烦了,直接把第一次创建的new_core目录复制一份,修改core.properties文件中的name即可。
11.导入数据-上(Dataimport)。
[[email protected] /]# cd /usr/local/solrhome7/contrib/dataimporthandler/lib/
#导入solr-dataimporthandler和mysql-connector-java jar包
[[email protected] lib]# cp /usr/local/tomcat9-solr7/webapps/solr7/WEB-INF/lib/solr-dataimporthandler-7.2.0.jar
#mysql-connector-java jar包得从外面找。solr项目里没有此包。
将以下内容添加至/usr/local/solrhome7/new_core/conf/solrconfig.xml里
<lib dir="${solr.install.dir:..}/contrib/dataimporthandler/lib" regex=".*\.jar" />
<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文件
[[email protected] conf]# mkdir data-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://114.215.239.127:3306/cloud_db" user="admin" password="Admin!23" batchSize="1000" />
<document>
<entity name="jd_product" pk="id"
deletedPkQuery="select jd_product_id from jd_product_fail where create_time > '${dataimporter.last_index_time}'"
query="SELECT id,sku,jd_id,goods_name,goods_inventory,ori_price,con_price,con_url,con_url_b,goods_url,commission,
parent_id,con_exist_num,con_expire_date,con_ticket_price,pro_desc,pro_spe,pro_spec_desc,competitive,category_name,create_time,update_time,commission_money,competitive_date,is_top,is_con,pro_source,create_user_id,create_user_name,is_seckill,is_zi_ying,seckill_start_time,seckill_end_time FROM jd_product"
deltaImportQuery="SELECT id,sku,jd_id,goods_name,goods_inventory,ori_price,con_price,con_url,con_url_b,goods_url,commission,
parent_id,con_exist_num,con_expire_date,con_ticket_price,pro_desc,pro_spe,pro_spec_desc,competitive,category_name,create_time,update_time,commission_money,
competitive_date,is_top,is_con,pro_source,create_user_id,create_user_name,is_seckill,is_zi_ying,seckill_start_time,seckill_end_time FROM jd_product where id='${dataimporter.delta.id}'"
deltaQuery="SELECT id FROM jd_product where update_time > '${dataimporter.last_index_time}'">
<field column="id" name="id"/>
<field column="is_top" name="product_is_top"/>
<field column="is_con" name="product_is_con"/>
<field column="pro_source" name="product_pro_source"/>
<field column="create_user_id" name="product_create_user_id"/>
<field column="create_user_name" name="product_create_user_name"/>
<field column="sku" name="product_sku"/>
<field column="jd_id" name="product_jd_id"/>
<field column="goods_name" name="product_goods_name"/>
<field column="goods_inventory" name="product_goods_inventory"/>
<field column="ori_price" name="product_ori_price"/>
<field column="con_price" name="product_con_price"/>
<field column="con_url" name="product_con_url"/>
<field column="con_url_b" name="product_con_url_b"/>
<field column="goods_url" name="product_goods_url"/>
<field column="commission" name="product_commission"/>
<field column="parent_id" name="product_parent_id"/>
<field column="con_exist_num" name="product_con_exist_num"/>
<field column="con_expire_date" name="product_con_expire_date"/>
<field column="con_ticket_price" name="product_con_ticket_price"/>
<field column="pro_desc" name="product_pro_desc"/>
<field column="pro_spe" name="product_pro_spe"/>
<field column="pro_spec_desc" name="product_pro_spec_desc"/>
<field column="competitive" name="product_competitive"/>
<field column="category_name" name="product_category_name"/>
<field column="create_time" name="product_create_time"/>
<field column="update_time" name="product_update_time"/>
<field column="commission_money" name="product_commission_money"/>
<field column="competitive_date" name="product_competitive_date"/>
<field column="is_seckill" name="product_is_seckill" />
<field column="is_zi_ying" name="product_is_zi_ying" />
<field column="seckill_start_time" name="product_seckill_start_time" />
<field column="seckill_end_time" name="product_seckill_end_time" />
</entity>
</document>
</dataConfig>
12.导入数据-下