设为首页 收藏本站
查看: 809|回复: 0

[经验分享] solr DataImportHandler(DIH)

[复制链接]

尚未签到

发表于 2016-12-15 06:47:42 | 显示全部楼层 |阅读模式
  http://wiki.apache.org/solr/DataImportHandler
  目标
  从关系数据库中导入数据
  环境
  apache-solr-dataimporthandler-3.4.0.jar和apache-solr-dataimporthandler-extras-3.4.0.jar和数据库驱动jar需要放到$solr.home/lib目录下
  配置solrconfig.xml

  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">/home/username/data-config.xml</str>
</lst>
</requestHandler>
  配置data-config.xml, 使用mysql, 表结构同例子(example-DIH中的db)中一致

<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/testsolr?autoReconnect=true&amp;characterEncoding=utf8&amp;useUnicode=true" user="root" password="123456" />
<!-- pk id 小写,大写报错,  Map.containsKey区分大小写 -->
<document>
<entity name="item" pk="id"
query="select * from item"
deltaImportQuery="select * from item where ID ='${dataimporter.delta.id}'"
deltaQuery="select id from item where last_modified > '${dataimporter.last_index_time}'">
<entity name="feature" pk="ITEM_ID"
query="select DESCRIPTION as features from FEATURE where ITEM_ID='${item.ID}'"
deltaQuery="select ITEM_ID from FEATURE where last_modified > '${dataimporter.last_index_time}'"
parentDeltaQuery="select ID from item where ID=${feature.ITEM_ID}"/>
<entity name="item_category" pk="ITEM_ID, CATEGORY_ID"
query="select CATEGORY_ID from item_category where ITEM_ID='${item.ID}'"
deltaQuery="select ITEM_ID, CATEGORY_ID from item_category where last_modified > '${dataimporter.last_index_time}'"
parentDeltaQuery="select ID from item where ID=${item_category.ITEM_ID}">
<entity name="category" pk="ID"
query="select DESCRIPTION as cat from category where ID = '${item_category.CATEGORY_ID}'"
deltaQuery="select ID from category where last_modified > '${dataimporter.last_index_time}'"
parentDeltaQuery="select ITEM_ID, CATEGORY_ID from item_category where CATEGORY_ID=${category.ID}"/>
</entity>
</entity>
</document>
<!-- deltaQuery集中写在一起
<document name="products">
<entity name="item" pk="id"
query="select * from item"
deltaImportQuery="select * from item where ID='${dataimporter.delta.id}'"
deltaQuery_1="select id from item where last_modified > '${dataimporter.last_index_time}'"
deltaQuery="select id from item where
id in (select item_id as id from feature where last_modified > '${dataimporter.last_index_time}')
or id in (select item_id as id from item_category where
item_id in (select id as item_id from category where last_modified > '${dataimporter.last_index_time}')
or last_modified > '${dataimporter.last_index_time}'
)
or last_modified > '${dataimporter.last_index_time}'" >

<entity name="feature" pk="ITEM_ID"
query="select description as features from feature where item_id='${item.ID}'">
</entity>
<entity name="item_category" pk="ITEM_ID, CATEGORY_ID"
query="select CATEGORY_ID from item_category where ITEM_ID='${item.ID}'">
<entity name="category" pk="ID"
query="select description as cat from category where id = '${item_category.CATEGORY_ID}'">
</entity>
</entity>
</entity>
</document>
-->
</dataConfig>

  pk="id"中id的大小写要注意
  dataSource更多参数见http://wiki.apache.org/solr/DataImportHandler
  entity属性


  • query数据查询sql
  • deltaQuery增加数据

  • parentDeltaQuery父entity增加数据
  • deletedPkQuery?
  • deltaImportQuery增量数据查询sql,如果没有则会根据query生成(可能生成错误),所以还是自己写的好
  全导入
  http://localhost:8983/solr/db/dataimport?command=full-import
  增量导入
  http://localhost:8983/solr/dataimport?command=delta-import
  其他命令:
  查看结果http://localhost:8983/solr/dataimport
  重新装载配置,修改配置文件后执行,避免重启服务http://localhost:8983/solr/dataimport?command=reload-config
  终止http://localhost:8983/solr/dataimport?command=abort
  执行后看返回的xml结果是否正常,还可以看后台是否有异常, 导入后可查询数据看看是否与数据库中一致
  conf/dataimport.properties中保存有last_index_time, 导入后solr会更新这个时间
  对于数据库中删除的数据?solr中的索引也应该要删除吧, 通过设置删除标记?(是不是最好的方法)
  MORE:
  multiple datasources
  DataImportHandlerDeltaQueryViaFullImport
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314303-1-1.html 上篇帖子: solr DataImportHandler(DIH) 下篇帖子: solr example在jetty下的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表