solr增量导入数据怎么配置

蜗牛 互联网技术资讯 2021-12-22 270 0

这篇文章主要介绍“solr增量导入数据怎么配置”,在日常操作中,相信很多人在solr增量导入数据怎么配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”solr增量导入数据怎么配置”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

   简介: solr5.0是一个独立的应用程序,不再依赖其他Web服务器就能提供Web服务(这是和4.x版本最大的差异,内置jetty)。

    solr增量导入数据怎么配置  solr 第1张

  1. 启动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

    solr增量导入数据怎么配置  solr 第2张

    logging:显示日志

    Core Admin: core就是搜索示例,放置索引。

    java properties:查看java配置信息

    Thread dump:查看线程信息

  2. 创建一个搜索实例

    {solr安装路径}/server/solr/新建一个文件夹命名为test

    拷贝{solr安装路径}/server/solr/configsets/sample_techproducts_configs到test目录下

    目录结构如下:
             solr增量导入数据怎么配置  solr 第3张

    在后台采用如下配置:
    solr增量导入数据怎么配置  solr 第4张

  3. 配置smartcn分词期

    1. 第一步:导入smartcn的jar包

      在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码

      <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs/" regex=".*smartcn.*\.jar"></lib>


    2. 第二步:配置分词器

      1.solr5

      在{solr安装路径}/server/solr/test/conf/schema.xml加入如下代码

      <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
            <analyzer> 
                <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>     
                <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>           
            </analyzer>
          </fieldType>

      2.solr6

      在{solr安装路径}/server/solr/test/conf/managed-schema加入如下代码

      <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
            <analyzer> 
                <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.StopFilterFactory">


       

    3. 第三步:检查是否正确配置
      solr增量导入数据怎么配置  solr 第5张  
       如果可以搜索到text_cn即表示配置成功,最好用一段文字测试下分词结果。

  4. 配置数据导入handler(用于数据导入,生成索引)

    1. 第一步:导入相关jar包(solr6不需要这一步)

      在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码

      <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />


    2. 第二步:配置handler(solr6不需要这一步)

      在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码

      <requestHandler name="/dataimport" class="solr.DataImportHandler">
          <lst name="defaults">
            <str name="config">db-data-config.xml</str>
          </lst>
        </requestHandler>


    3. 第三步:配置数据源,源数据与索引的隐射关系

      在{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>


    4. 第四步:验证配置是否成功

      在后台core admin中reload当前搜索实例的配置solr增量导入数据怎么配置  solr 第6张

      then在搜索实例的dataimport出现下图情形即为成功

      solr增量导入数据怎么配置  solr 第7张

  5. 导入数据

    1. 第一步:导入mysql的jar包 下载地址:见参考资料5

      将jar放置到{solr安装路径}/dist目录下,

      在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码

      <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql.*\.jar" />


    2. 第二步:验证配置(配置见第六点)

      solr增量导入数据怎么配置  solr 第8张

      如果显示indexing completed. Added/Updated: 1847 documents. Deleted 0 documents

      documents的个数大于0说明我们成功导入x条数据到solr中

  6. 设置field的索引方式

  7. 查询

  8. 更新索引

  9. 删除索引

  10. 优化

  11. 定时完整数据重新导入

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增量导入数据怎么配置”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注蜗牛博客网站,小编会继续努力为大家带来更多实用的文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram