solr6.6+jetty+centos+mysql
solr6.6+jetty+centos+mysql
太黑_thj 发表于4个月前
solr6.6+jetty+centos+mysql
  • 发表于 4个月前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0
摘要: 各种百度各种坑。百度很多都是直接把solr布到服务器就完了,在数据导入这块都留了坑,爬了两天终于爬出来了!

安装步骤(solr6.6+jetty+centos+mysql)

(使用solr内带的jetty作为服务器)

1.下载solr:http://www.apache.org/dyn/closer.lua/lucene/solr/6.6.0

2.丢到服务器上去   用命令解压   比如我最后解压的路径是

/data/solr/solr-6.6.0

3.进入到安装的根目录  cd /data/solr/solr-6.6.0(以下的所有操作都是基于这个文件夹的)

4.启动   bin/solr start (为solr分配了专用账号的情况下用这个命令启动)

bin/solr start -force(如果没有为solr分配账号得加上后面的-force强制启动)

5.默认占用8983端口

那么访问的地址就是   ip:8983

 eg:   http://192.168.1.1:8983

小结:

看网上的教程到这边基本都是没问题的,而且也基本到启动完就没了,我最想要的mysql数据导入却没有,哎肾伤;

如何创建一个core

方法一(基本没用的,做研究的同学可以看,如果只是用请直接看方法二)

1.先用命令创建   bin/solr create -c <core的名字>  这个名字你自己随便喜欢什么就取什么吧

2.接着将命令执行下去 bin/post -c <core的名字> example/exampledocs/*.xml(这句的用意是将内带的例子拷贝过来看看)

3.到页面刷新一下就可以看到你自己命名的core了

方法二(创建一个能导入mysql数据的core)

1.先将solr-6.6.0/server/solr/configsets/data_driven_schema_configs这个文件夹考本出来到本地

2.将上面拷贝出来的文件夹放到solr-6.6.0/server/solr   (自己重命名下文件夹,看你喜欢叫什么名称,比如我的叫thj_solr_core)

3.到页面去用add core的功能添加你刚才拷贝过去的文件夹

(到这边一个可以用来导入mysql数据的core就算是创建完成了)

4.添加mysql驱动(我这边用的是mysql-connector-java-5.1.42.jar)直接把这个mysql的jar包放到solr-6.6.0/dist这个文件夹内就可以了

5.配置数据

5.1 添加依赖在solr-6.6.0/server/solr/thj_solr_core/conf/solrconfig.xml这个文件添加两行依赖

添加到<config></config>这个标签中间

 <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-5.1.42.jar" />
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-6.6.0.jar" />

5.2 重启solr(加载新依赖)

bin/solr restart  

5.3 配置mysql

5.3.1 比如我有个mysql的数据库名为thj_db

在thj_db这个库里有个表名为food_t

在food_t这个表里有四个字段  ft_id ,ft_name ,ft_mome, ft_updateTime

5.3.2 在solr-6.6.0/server/solr/thj_solr_core/conf文件夹内创建一个data-config.xml

内容如下(主键的name一定要用id)

<?xml version="1.0" encoding="UTF-8"?>  
<dataConfig>  
    <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/thj_db" user="root" password="root" batchSize="-1" />  
  <document>  
        <!--deltaImportQuery 里面引用id要和entity的pk属性一样才能生效-->
        <entity name="food_t" pk="ft_id"  dataSource="source1"   
                query="select * from  food_t"  
                deltaImportQuery="select * from food_twhere ft_id='${dataimporter.delta.ft_id}'"  
                deltaQuery="select lha_id from food_t where ft_updateTime> '${dataimporter.last_index_time}'">  
  
       
	<field column="ft_id" name="id" /><!-- 主键的name必须用id -->
    <!--一个数据库字段可以映射多个name,对应的在schema文件也加上去就可以了-->
    <!--<field column="ft_id" name="ft_id" />-->
	<field column="ft_name" name="name"  />
	<field column="ft_memo" name="memo"  />
	<field column="ft_updateTime" name="updateTime"  />
	
     </entity>  
  </document>  
</dataConfig> 

5.3.3继续修改solr-6.6.0/server/solr/thj_solr_core/conf/solrconfig.xml

5.3.3.1 定位到   <requestHandler name="/select" class="solr.SearchHandler">

5.3.3.2 在这行上面添加数据配置

 <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
      <lst name="defaults">  
         <str name="config">data-config.xml</str>  
      </lst>  
 </requestHandler>
 <!--  在这行上面添加数据配置  -->
  <requestHandler name="/select" class="solr.SearchHandler">

5.3.4 修改solr-6.6.0/server/solr/thj_solr_core/conf/managed-schema

5.3.4.1 先定位到<schema name="example-data-driven-schema" version="1.6">

由于这个是拷贝出来,所以这边的那么得换一下,换成表名替换完效果如下

<schema name="food_t" version="1.6">

5.3.4.2 继续定位到  <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

在这行的下面添加field

<!-- 这个也是默认的,勿动,默认对应你的主键 (我修改了几次发现都不能用)--> 
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!--  在这里开始添加你的字段 主键不需要添加  field 标签的的属性名称是什么意思就自己去百度吧-->
<!-- field里面的name属性对应的是咱们在data-config.xml里面设置的name-->
    <field name="name"  type="string" indexed="true" stored="true" />
	<field name="memo" type="string" indexed="true" stored="true" />
	<field name="updateTime" type="string" indexed="true" stored="true" />
<!-- 下面的这些事默认的,勿动 -->
    <!-- doc values are enabled by default for primitive types such as long so we don't index the version field  -->
    <field name="_version_" type="long" indexed="false" stored="false"/>
    <field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
    <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>

5.4重启solr(不重启好像也能用)

bin/solr restart  

5.5到页面

注意:

一定要看清楚data-config.xml和managed-schema这两个文件的修改细节

不然到时候你就会纳闷为什么配置看上去都是一样对的,怎麼数据就是过不来呢,反正我是卡了两天才发现

标签: solr6.6 jetty
共有 人打赏支持
粉丝 12
博文 97
码字总数 50255
×
太黑_thj
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: