solr 增量更新
2016-08-04 16:50
281 查看
</pre>solr 数据太多了 不能老full-import ,数据少 还好 数据超过10万+ 创建索引要好久 好久,,,<p></p><p></p><p> 把数据库新增的数据创建索引 这时候就引入了增量更新 delta-import </p><p></p><p>首先在data-config.xml :</p><p></p><pre name="code" class="plain"><document> <entity name="iczshuxue" pk="t_uuid" query="SELECT knowledge_id, content, t_uuid, degree degree_enum, type type_enum, label, options,'iczshuxue' table_name, q_type child_type,children_id,s_content,s_options,updateTime FROM iczshuxue where state != -1 " deltaImportQuery="SELECT knowledge_id, content, t_uuid, degree degree_enum, type type_enum, label, options,'iczshuxue' table_name, q_type child_type,children_id,s_content,s_options,updateTime FROM iczshuxue where t_uuid='${dih.delta.t_uuid}'" deltaQuery="SELECT t_uuid FROM iczshuxue where state != -1 and updateTime>'${dataimporter.last_index_time}'"> <field column="content" name="edu_title" /> <field column="options" name="edu_content" /> <field column="label" name="edu_label" /> <field column="degree_enum" name="edu_difficulty" /> <field column="type_enum" name="edu_type" /> <field column="t_uuid" name="edu_ques_id" /> <field column="knowledge_id" name="edu_knowledge_id" /> <field column="table_name" name="edu_table" /> <field column="children_id" name="edu_child_id" /> <field column="child_type" name="edu_child_type" /> <field column="s_content" name="s_edu_title" /> <field column="s_options" name="s_edu_content" /> <field column="updateTime" name="updateTime"/> </entity> </document>pk :主键
deltaimportQuery和deltaQuery 增量更新用的
deltaQuery查出最后更新时间大于dataimport.properties的last_index_time的pk集合
deltaimportQuery然后取出pk 主键的记录详情
数据库字段如果没有updateTime 就要新建呀,类型是timestamp 新建和修改都更新:
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
更新到solr索引去
就是这么简单的东西 我都不好意思说我折腾了辣么久 诶
更新索引的
url : /{xxxx}/dataimport
参数:
command:
delta-import
commit:
true
wt:
json
indent:
true
verbose:
false
clean:
false
optimize:
false
debug:
false
clean 参数如果是true 的话 索引会被清空`~我艹 但是 和群里 有得人交流 他说他的不会被清空 没深聊 ,,多次自己实验 就是会清空啊 不然 为嘛叫clean
然后聊聊 修改数据
在上面的情况中 添加记录和修改记录 都会往solr添加新的记录,, 改一次 加一条 改一次 加一条~~额吓死本宝宝了 ,
打开文件
schema.xml :
找到<uniqueKey>id</uniqueKey> 把id 改了 改成某一个field 的name 就好了,前提是这个field的属性indexed=true 一般都是id 什么的啦
我刚开始纠结的原因是 我用的id是下面这个:
<fieldType name="uuid" class="solr.UUIDField" sortMissingLast="true" indexed="true"/> <field name="id" type="uuid" indexed="true" stored="true" required="true" multiValued="false" />
再聊聊删除数据
这儿删除 不是真正意义的删除 真正数据库删除了数据 就会涉及到solr 索引重建
这里说的删除是 假删 修改有效字段状态而已 比如 state 正常情况下是0 不显示情况是-1 见
data-config.xml
在原有的基础上加 :
deletedPkQuery="select t_uuid from iczshuxue where state = -1"
这样 以后delta-import的时候 就会自己去掉这条记录了
相关文章推荐
- 在Eclipse中运行Solr 基础知识
- Android-App增量更新的使用姿势
- Solr 5.3.0集成mmseg4j、tomcat部署、Solrj 5.3.0使用
- Solr基础--设置solr/home的三种方式
- windows下安装solr5.5.0
- Docker使用supervisor构建solr
- solr4.0安装和简单导入mysql数据
- Solr 4.0 基础教程
- 自译Solr in action中文版
- Solr In Action 中文版 第一章(一)
- Solr In Action 中文版 第一章 (二)
- Solr In Action 中文版 第一章(三)
- solr搜索引擎使用
- Android App 增量更新实例(Smart App Updates)
- 基于solr实现hbase的二级索引
- 基于Nutch&Solr定向采集解析和索引搜索的整合技术指南文档
- 基于Nutch&Solr定向采集解析和索引搜索的整合技术指南文档
- Tomcat/Solr4.3.1 配置过程
- Solr Facet技术的应用与研究
- Apache Solr查询语法