欢迎投稿

今日深度:

solr 增量更新,

solr 增量更新,


</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  新建和修改都更新:

TIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP


更新到solr索引去   

 就是这么简单的东西  我都不好意思说我折腾了辣么久  诶


更新索引的 

url   :  /{xxxx}/dataimport 

参数:

  1. command: delta-import
  2. commit: true
  3. wt: json
  4. indent: true
  5. verbose: false
  6. clean: false
  7. optimize: false
  8. 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的时候 就会自己去掉这条记录了

www.htsjk.Com true http://www.htsjk.com/solr/37232.html NewsArticle solr 增量更新, /presolr 数据太多了 不能老full-import  ,数据少 还好  数据超过10万+  创建索引要好久 好久,,,p/pp/pp 把数据库新增的数据创建索引 这时候就引入了增量更新 delta-import /...
相关文章
    暂无相关文章
评论暂时关闭