DIH主要用于从数据库抓取数据并创建索引。另外还能够从HTTP(RSS、ATOM)拉数据。


相关概念:
  • Datasource:数据源,包含获取数据必需的信息:数据位置(url)、数据库driver、登录账号和password
  • Entity:相当于数据库的一个视图,能够从一个表或联表查询获得
  • Processor:数据处理器,负责从数据源中获取数据、处理、然后增加到索引中
  • Transformer:数据转换器,可选,负责改动数据、创建新的field、或依据须要把一条记录变成多条记录

首先。链接数据库须要mysql connector
下载地址:http://mvnrepository.com/。搜索:mysql
connector java
点击最新版本,点击“Download ( JAR ) ”下载,或(更方便的方法)复制链接地址,然后用wget下载:
cd /opt/app/solr/server/solr-webapp/webapp/WEB-INF/lib/
wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar

配置:

solrconfig.xml中加入 requestHandler,比如:
  1. <requestHandler name="/dataimport" class="solr.DataImportHandler">
  2. <lst name="defaults">
  3. <str name="config">db-data-config.xml</str>
  4. </lst>
  5. </requestHandler>

config參数指定DIH配置文件的位置。DIH配置文件负责指定数据源、拉取和处理数据的方法。


solrconfig.xml
中加入DIH jar包依赖:
  1. <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

DIH配置文件:
根节点:<dataConfig>
  • dataSource

    • type: 数据源类型,如:JdbcDataSource(缺省值),採用SqlEntityProcessor
    • driver: 数据库驱动,如:com.mysql.jdbc.Driver
    • convertType:
    • url: 数据库url
    • user: 你懂的
    • password: 你懂的
  • document
    • entity

      • name: 随便起的一个标志,能够给嵌套的entity使用。比方${item.id}(如果name="item")
      • query: 拉取全部数据的语句
      • deltaQuery: 拉取delta数据的语句,如:deltaQuery="select * from xxx where last_modified > '${dataimporter.last_index_time}'"
      • field: 指定 dataSource 的 field 和 solr 的field的相应关系,如:<field name="NAME" column="name" />
      • entity: 嵌套的entity。定义一些一对多的数据。能够使用父entity的name作为条件,比方:where item_id='${item.id}'
      • transformer: 指定transformer对象。多个的话用逗号分开

配置文件样例(文件名称:db-data-config.xml)
  1. <dataConfig>
  2. <dataSource type="JdbcDataSource"
  3. driver="com.mysql.jdbc.Driver"
  4. convertType="true"
  5. url="jdbc:mysql://127.0.0.1:3306/db_name"
  6. user="sa"
  7. password="123456"/>
  8. <document>
  9. <entity name="course_video" query="SELECT id, title, content, tags FROM ts_course_video" >
  10. </entity>
  11. </document>
  12. </dataConfig>

须要和另外一个配置文件配合使用:schema.xml。定义了field和fieldType。參考:http://blog.csdn.net/clementad/article/details/47666043

样例:
  1. <?
  2.  
  3. xml version="1.0" encoding="UTF-8" ?>
  4.  
  5. <schema name="course_video" version="1.5">
  6. <field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
  7.  
  8. <field name="_version_" type="long" indexed="true" stored="true"/>
  9.  
  10. <field name="title" type="string" indexed="true" stored="true" required="true" multiValued="false" />
  11. <field name="tags" type="string" indexed="true" stored="false" required="false" multiValued="false" />
  12. <field name="content" type="string" indexed="true" stored="true" required="false" multiValued="false" />
  13.  
  14. <field name="info_text" type="text_general" indexed="true" stored="false" multiValued="true" />
  15.  
  16. <copyField source="title" dest="info_text" />
  17. <copyField source="content" dest="info_text" />
  18. <copyField source="tags" dest="info_text" />
  19.  
  20. <uniqueKey>id</uniqueKey>
  21.  
  22. <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
  23. <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
  24.  
  25. <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  26. <analyzer type="index">
  27. <tokenizer class="solr.StandardTokenizerFactory"/>
  28. <filter class="solr.LowerCaseFilterFactory"/>
  29. </analyzer>
  30.  
  31. <analyzer type="query">
  32. <tokenizer class="solr.StandardTokenizerFactory"/>
  33. <filter class="solr.LowerCaseFilterFactory"/>
  34. </analyzer>
  35. </fieldType>
  36.  
  37. </schema>

通过HTTP请求(POST或GET)运行各种DIH操作:

请求格式:http://<host>:<port>/ solr/ <collect ion_name>/ dataimport? command=<command>
当中,各种<command>例如以下:
  • abort:停止当前正在进行的操作
  • delta-import:调用deltaQuery拉取数据。

    能够带上几个额外的參数:&clean=true&commit=true等等(和full_import同样)

  • full-import:调用query拉取全部数据。

    请求会立即返回。后台有新线程运行重建索引的操作。

    能够通过status操作查询状态。

    额外參数:

    • clean:缺省为true。是否在開始重建索引前清除旧索引
    • commit:缺省为true。是否提交操作请求
    • debug:缺省为false。

      debug模式,不会commit操作。

      假设同一时候须要commit,得带上commit=true參数

    • entity:缺省为全部的entity。能够指定某一个或多个entity
    • optimize:缺省为true。是否须要在完毕操作后优化索引
  • reload-config:假设改动了配置文件,运行这个命令使它生效
  • status:返回各种统计数据、以及DIH的当前状态

(原创文章。转载请注明转自Clement-Xu的博客)




Solr DataImportHandler 配置的更多相关文章

  1. Solr Dataimport配置

    参考资料: https://cwiki.apache.org/confluence/display/solr/Uploading+Structured+Data+Store+Data+with+the ...

  2. solr多核配置

    假设已经配置好了一个单core的solr服务器. solr.xml配置文件 单核和多核主要在solr.xml配置不同.在solr/example中已经有一个名称为multicore的文件夹里面给我们配 ...

  3. BugPhobia沟通篇章:Solr模式配置与数据导入调研

    0x01 :Scrum Meeting特别说明 特别说明,考虑到编译原理课程考核的时间安排,每天开发时间急剧缩短以至于难以维系正常的Scrum Meeting,因此,将2015/12/13 00:00 ...

  4. solr scheme配置简介

    solr 字段配置,和数据库数据索引配置 配置solr字段. schema.xml 文件里配置 先讲解一下,里面的一些字段 1. <types> ... </types> 表示 ...

  5. 在Solr中配置中文分词IKAnalyzer

    李克华 云计算高级群: 292870151 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch 在Solr中配置中文分词IKAnalyzer 1.在配置文件schema.xml ...

  6. solr 日志配置

    配置Solr日志记录 临时记录设置 您可以使用Admin Web界面来控制Solr中的日志输出量.选择LOGGING链接.请注意,此页面只允许您更改正在运行的系统中的设置,并不会保存在下一次​​运行中 ...

  7. solr连接数据库配置

    一般要搜索的信息都是被存储在数据库里面的,但是我们不能直接搜数据库,所以只有借助Solr将要搜索的信息在搜索服务器上进行索引,然后在客户端供客户使用. 一.链接数据库 1. SQL配置 拿SQL Se ...

  8. 四、Solr数据源配置(JNDI、DIH)及定时重做索引

    简介 Solr支持很多种创建索引的方式,包括网页,xml以及数据库,因为我这边做的是企业级的搜索,所以用的是数据库建立索引.其实从数据库建立索引,很大程度上取决于原来的数据库设计. 从数据库建立索引, ...

  9. [转]solr DataImportHandler 解决mysql 表导入内存溢出问题

    最近一个项目要用到solr做全文检索,开始盲人摸象. 用tomcat 7 开始配置,开始正常,但是遇到cookie里有中文就报错. 无奈,换tomcat 6, 结果DataImportHandler ...

随机推荐

  1. C#-MSMQ安装及配置

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  2. BZOJ——1602: [Usaco2008 Oct]牧场行走 || 洛谷—— P2912 [USACO08OCT]牧场散步Pasture Walking

    http://www.lydsy.com/JudgeOnline/problem.php?id=1602 || https://www.luogu.org/problem/show?pid=2912 ...

  3. test文件夹,测试类是放在src目录下的,test测试代码是代码啊,当然要放在代码文件夹下

    test文件夹,测试类是放在src目录下的,test测试代码是代码啊,当然要放在代码文件夹下 Maven的标准工程结构 Maven的标准工程结构如下: |-- pom.xml(maven的核心配置文件 ...

  4. android 读取xml

    在有些应用中,有一点小数据.直接存储在XML就是.实现较为简单, 1.xml文件放入asset目录.结构如: <?xml version="1.0" encoding=&qu ...

  5. ubuntu系统AndroidStudio改动内存大小

    位于android-studio/bin文件夹下的studio64.vmoptions和studio.vmoptions文件. 把Xms,Xmx,-XX:MaxPermSize.-XX:Reserve ...

  6. Android实现天气预报温度/气温折线趋势图

     Android实现天气预报温度/气温折线趋势图 天气预报的APP应用中,难免会遇到绘制天气温度/气温,等关于数据趋势的折线或者曲线图,这类关于气温/温度的折线图,通常会有两条线.一条是高温线,一 ...

  7. JDBC连接mysql时出现的ssl问题

    使用MySQL数据库时出现如下错误: WARN: Establishing SSL connection without server's identity verification is not r ...

  8. 【VC++游戏开发】智力游戏——鸡蛋里挑骨头(仿扫雷)

    在我学习游戏开发的过程中,遇到的最大的麻烦就是不知道一个游戏的完整实现过程,代码倒是其次. 这里,总结一下我做过的游戏.主要是梳理整每一个步骤. 先看下终于的效果 第1步,准备素材图片 包含鸡蛋.骨头 ...

  9. hdu 4628 Pieces(状态压缩+记忆化搜索)

    Pieces Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total S ...

  10. _00017 Kafka的体系结构介绍以及Kafka入门案例(0基础案例+Java API的使用)

    博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...