Solr DIH query 工作流
本文地址 http://www.cnblogs.com/jasonxuli/p/6491270.html
DataImportHandler (DIH) 支持全量数据导入和增量数据导入,主要有四个query:query,deltaQuery,parentDeltaQuery,deltaImportQuery。
大体概括就是:
想要以 Student 表为 document 的主体,Class表通过 Student.classId 于 Student 表关联,配置如下:
solr-data-config.xml:
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://dbhost/dbname?zeroDateTimeBehavior=convertToNull" user="dbuser"
password="dbpassword"/>
<document>
<entity name="student" transformer="RegexTransformer" pk="id"
query="select * from Student where deleted=0;"
deltaImportQuery="select * from Student where deleted=0 and id='${dih.delta.id}';"
deltaQuery="select id from Student where convert_tz(updatedAt, '+00:00', '+08:00') > '${dih.last_index_time}');"
deletedPkQuery="select id from Student where deleted=1;"> <field column="id" name="id"/>
<field column="name" name="name"/>
<field column="age" name="age"/>
<field column="classId" name="classId"/>
<field column="deleted" name="deleted"/>
<field column="createdAt" name="createdAt"/>
<field column="updatedAt" name="updatedAt"/> <entity name="class" transformer="RegexTransformer" pk="classId"
query="select * from Class where deleted=0 and id='${student.classId}'"
deltaQuery="select id from Class where convert_tz(updatedAt, '+00:00', '+08:00') > '${dih.last_index_time}'"
parentDeltaQuery="select id from Student where classId=${class.id}">
<field column="image" name="image"/>
<field column="banner" name="banner"/>
</entity>
</entity>
</document>
</dataConfig>
在上面配置中,student有四个SQL语句,class有三个SQL语句,其中只有 student.query 没有输入(参数)。
全量导入时:
1,从父实体 student 开始,执行 query 语句,获取到 student.id 等字段;
2,用这些 student.id 去组成 class.query 语句,获取 class。
增量导入时:
只要有任何父/子数据变化,就重新生成相关文档
1,从子实体 class 开始,执行 deltaQuery 语句,获取到 class.id;
2,用 class.id 组装 class parentDeltaQuery 语句,获取到 student.id;
3.1,用 student.id 组装 student deltaImportQuery 语句,获取到需要更新的 student;
3.2,用 class.id 组装 class deltaImportQuery 或者 class query,获取需要更新的 class ;
参考:https://wiki.apache.org/solr/DataImportHandler#Configuring_DataSources
----------------
备注:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">solr-data-config.xml</str>
</lst>
<lst name="datasource">
<str name="driver">com.mysql.jdbc.Driver</str>
<str name="url">jdbc:mysql://localhost/test</str>
<str name="user">root</str>
<str name="password">root</str>
</lst>
</requestHandler>
Solr DIH query 工作流的更多相关文章
- Solr DIH JDBC 源码解析
Solr DIH 源码解析 DataImportHandler.handleRequestBody()中的importer.runCmd(requestParams, sw) if (DataImpo ...
- solr DIH 知识梳理
solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...
- Solrj和Solr DIH索引效率对比分析
测试软件环境: 1.16G windows7 x64 32core cpu . 2.jdk 1.7 tomcat 6.x solr 4.8 数据库软件环境: 1.16G windows7 x64 ...
- Solr DIH dataconfig配置
1. 配置文件data-config.xml定义了数据库的基本配置,以及导出数据的映射规则,即导出数据库表中对应哪些字段的值,以及对特定字段的值做如何处理 </pre><p>& ...
- Solr 07 - Solr从MySQL数据库中导入数据 (Solr DIH的使用示例)
目录 1 加入数据导入处理器的jar包 2 加入数据库驱动包 3 配置solrconfig.xml文件 3.1 配置lib标签 - 加入驱动jar包 3.2 配置requestHandler标签 - ...
- Solr DIH导入出现 Data Config problem: 前言中不允许有内容 异常
Solr配置DIH导入时出现 “Data Config problem: 前言中不允许有内容.” 异常. <response> <lst name="responseHea ...
- Solr DIH以Mysql为数据源批量创建索引
演示使用solr管理后台,以mysql为数据源,批量建索引的方法 测试于:Solr 4.5.1, mmseg4j 1.9.1, Jdk 1.6.0_45, Tomcat 6.0.37 | CentOS ...
- solr系统query检索词特殊字符的处理
solr是基于 lucence开发的应用,如果query中带有非法字符串,结果很可能是检索出所有内容或者直接报错,所以你对用户的输入必须要先做处理.输入星号,能够检索出所有内容:输入加号,则会报错. ...
- [转]solr系统query检索词特殊字符的处理
原文地址:http://blog.csdn.net/wgw335363240/article/details/39889979 solr是基于 lucence开发的应用,如果query中带有非法字符串 ...
随机推荐
- 控制input框的内容输入为数字
<script> function toNum(v) { return v.replace(/[^\d.]/g, '').replace(/^\./g, "").rep ...
- c++11——可变参数模板
在c++11之前,类模板和函数模板只能含有固定数量的模板参数,c++11增加了可变模板参数特性:允许模板定义中包含0到任意个模板参数.声明可变参数模板时,需要在typename或class后面加上省略 ...
- linux 上安装pstree
linux 无法使用pstree centos7上默认没有安装psmisc包. 1.在 Mac OS上 brew install pstree 2.在 Fedora/Red Hat/CentOS yu ...
- Maven入门指南(一)
Maven介绍: Maven是一个强大的Java项目构建工具. 什么是构建工具? 构建工具是将软件项目构建相关的过程自动化的工具.构建一个软件项目通常包含以下一个或多个过程: 生成源码(如果项目使用自 ...
- 【BZOJ4094】[Usaco2013 Dec]Optimal Milking 线段树
[BZOJ4094][Usaco2013 Dec]Optimal Milking Description Farmer John最近购买了N(1 <= N <= 40000)台挤奶机,编号 ...
- 微信小程序 --- 事件绑定
事件类别: tap:点击事件: longtap:长按事件: touchstart:触摸开始: touchend:触摸结束: touchcansce:取消触摸: 事件绑定: bind绑定: catch绑 ...
- Apache POI 读写 Excel 文件
目录 写入 Excel 文件 读取 Excel 文件 遍历 Excel 文件 需要的 maven 依赖 完整代码 写入 Excel 文件 // 写入 Excel 文件 // ============= ...
- 删除 oracle
C:\app\Administrator\product\11.2.0\client_1\deinstall 用这个批处理文件,会把oracle全部删除,除这个目录本身以外 .另外它不删除服务,即使服 ...
- 多线程下载图片,滑动tableView崩溃--资源抢夺问题
最近练习使用NSoperation模拟SDWebImage下载图片,发生了崩溃的问题,还专门写博客记录这件事情: http://www.cnblogs.com/tufei7/p/7074030.htm ...
- vue - webpack、babel
一.webpack 在这里我仅仅的是对webpack做个讲解,webpack这个工具非常强大,解决了我们前端很繁琐的一些工具流程繁琐的事情.如果感兴趣的同学,建议还是看官网吧. 中文链接地址:http ...