当前位置:   article > 正文

将数据库表导入到solr索引

从数据库表读取数据至solr

将数据库表导入到solr索引

  1. 编辑solrcofnig.xml添加处理器

    1. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    2. <lst name="defaults">
    3. <str name="config">data-config.xml</str>
    4. </lst>
    5. </requestHandler>
  2. 创建一个名为data-config.xml的文件并保存如下内容到conf目录(也就是solrconfig.xml的目录)

    1. <dataConfig>
    2. <dataSource type="JdbcDataSource"
    3. driver="com.mysql.jdbc.Driver"
    4. url="jdbc:mysql://localhost/dbname"
    5. user="user-name"
    6. password="password"/>
    7. <document>
    8. <entity name="id"
    9. query="select id,name,desc from mytable">
    10. </entity>
    11. </document>
    12. </dataConfig>
  3. 编辑schema.xml文件,保证文件中有'id','name','desc'等fields。并更改data-config.xml的详细信息。

  4. 将JDBC的jar驱动文件放到/lib文件夹中(tomcat/webapps/solr/WEB-INF/lib)

  5. 运行命令 http://solr-host:port/solr/dataimport?command=full-import进行全量索引,每次进行全量索引时,会将数据清空,如果不想清空需要添加clean=false。例如http://solr-host:port/solr/dataimport?command=full-import&clean=false

在字段名和field明不同的时候添加索引
  1. 修改data-config.xml,如下所示

    1. <dataConfig>
    2. <dataSource type="JdbcDataSource"
    3. driver="com.mysql.jdbc.Driver"
    4. url="jdbc:mysql://localhost/dbname"
    5. user="user-name"
    6. password="password"/>
    7. <document>
    8. <entity name="id"
    9. query="select id,name,desc from mytable">
    10. <field column="id" name="solr_id"/>
    11. <field column="name" name="solr_name"/>
    12. <field column="desc" name="solr_desc"/>
    13. </entity>
    14. </document>
    15. </dataConfig>
  2. 写入solr的字段为'solr_id', 'solr_name', solr_desc'。所以schema.xml中必须要要这几个field。

  3. 运行 http://solr-host:port/dataimpor?command=full-import 建立索引

配置多个表建立索引
  1. 修改data-config如下:

    1. <dataConfig>
    2. <dataSource type="JdbcDataSource"
    3. driver="com.mysql.jdbc.Driver"
    4. url="jdbc:mysql://localhost/dbname"
    5. user="user-name"
    6. password="password"/>
    7. <document>
    8. <entity name="outer"
    9. query="select id,name,desc from mytable">
    10. <field column="id" name="solr_id"/>
    11. <field column="name" name="solr_name"/>
    12. <field column="desc" name="solr_desc"/>
    13. <entity name="inner"
    14. query="select details from another_table where id ='${outer.id}'">
    15. <field column="details" name="solr_details"/>
    16. </entity>
    17. </entity>
    18. </document>
    19. </dataConfig>
  2. schema.xml应该包含solr_details的字段

  3. 运行full-import

mysql配置
  1. 下载mysql的JDBC的jar,并拷贝到/lib的文件夹

  2. 修改data-config为如下

    1. <dataConfig>
    2. <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
    3. url="jdbc:mysql://ip:3306/dbname"
    4. user="username"
    5. password="password"/>
    6. <document name="products">
    7. <entity
    8. ......
    9. </entity>
    10. </document>
    11. </dataConfig>
DataImportHandler支持的命令
  1. abort http://<host>:<port>/solr/dataimport?command=abort 终止命令
  2. delta-import http://<host>:<port>/solr/dataimport?command=delta-import 增量
  3. full-import http://<host>:<port>/solr/dataimport?command=full-import 全量
  4. reload-config http://<host>:<port>/solr/dataimport?command=reload-config 重新加载配置
  5. status http://<host>:<port>/solr/dataimport?command=status 状态查询
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号