美文网首页
Solr6.4.2+jetty+mysql

Solr6.4.2+jetty+mysql

作者: 小乖心塞 | 来源:发表于2017-03-09 18:01 被阅读258次

    下载地址

    solr : solr官网地址

    部署

    • 由于solr默认带有jetty服务器,所以使用默认jetty服务器

    • 解压后的目录结构


      解压后的目录结构

    启动

    cd solr-6.4.2;
    bin/solr start -p [端口名];
    bin/solr stop -p [端口名];
    bin/solr restart -p [端口名];
    
    

    启动成功后的页面

    创建core

    core 是存储索引的地方

    1. 这次是连接mysql,到/Users/wangxun/Downloads/solr-6.4.2/server/solr/configsets 复制data_driven_schema_configs 文件夹 mycollect

    2. 为了导入数据和链接mysql,我们还需要导入两个重要的jar包。由于mysql的jar包并没有在项目中,我是复制了一份放到了dist目录下面了。另外两个需要的jar包就是dist目录下带有“dataimport”标识的jar包。
      然后打开myCollections/conf/solrconfig.xml,引用上面提到的jar包,如下。

    <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
      <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />
    
      <!-- mysql导入增加的包开始-->
      <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-5.1.30.jar" />
      <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
      <!-- mysql导入增加的包结束-->
    

    之前我引入的是5.1.20,一直报错。后来更换了jar就可以了

    1. 建立表

    2. 将表跟solr的实体对应上。myCollections/conf/solrconfig.xml,搜索 <requestHandler name="/select" class="solr.SearchHandler"> ,然后在该行之上添加如下代码。

    <!--mysql 数据库导入开始 -->
      <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
          <lst name="defaults">  
             <str name="config">data-config.xml</str>  
          </lst>  
     </requestHandler> 
      <!--mysql 数据库导入结束 -->
        
      <requestHandler name="/select" class="solr.SearchHandler">
    
    1. 配置data-config.xml文件
    <?xml version="1.0" encoding="UTF-8"?>  
    <dataConfig>  
      <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.198.100:3306/blade" user="root" password="123456" batchSize="-1" />  
      <document>  
        <entity name="person" pk="id"  dataSource="source1"   
                    query="select * from person"  
                    deltaImportQuery="select * from person where id='${dih.delta.id}'"  
                   deltaQuery="select id from person where updatetime> '${dataimporter.last_index_time}'">  
          <field column="id" name="id"/>  
          <field column="name" name="name"/>  
          <field column="money" name="money"/>  
          <field column="content" name="content"/> 
          <field column="updatetime" name="updatetime"/>   
        </entity>  
      </document>  
    </dataConfig>
    

    dataSource是数据库数据源。Entity就是一张表对应的实体,pk是主键,query是查询语句。Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed的名字。其中solrdata是数据库名,goods是表名。

    其中deltaQuery是增量索引,原理是从数据库中根据deltaQuery指定的SQL语句查询出所有需要增量导入的数据的ID号。然后根据deltaImportQuery指定的SQL语句返回所有这些ID的数据,即为这次增量导入所要处理的数据。核心思想是:通过内置变量“${dih.delta.id}”和 “${dataimporter.last_index_time}”来记录本次要索引的id和最近一次索引的时间。

    1. managed-schema配置field信息
    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
        <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"/>
    
         <field name="name" type="string" indexed="true" stored="false" />
        <field name="money" type="int" indexed="true" stored="false" />
        <field name="content" type="string" indexed="true" stored="true" />
        <field name="updatetime" type="date" indexed="true" stored="true" />
    
    1. 创建core


      创建core
    2. 执行


      执行
    3. 查询测试


      查询测试

    相关文章

      网友评论

          本文标题:Solr6.4.2+jetty+mysql

          本文链接:https://www.haomeiwen.com/subject/iecggttx.html