solr生成关联表索引

因关系表数据已过亿,用户表数据也接近六千万,直接查询数据库,对数据库压力较大,所以用solr生成索引来优化

不过关联表生成索引速度比单表索引生成速度要慢许多,,很多同学遇到建立关联表的索引的时候,子实体更新了信息之后父类对应的索引数据并不会更新,这里需要用到parentDeltaQuery属性,把从子类抓取的更新的数据,同步到父类里面去,代码如下

<entity name="zbuserrelation" 

            deltaQuery="SELECT id from zbuserrelation where addtime >= '${dataimporter.last_index_time}'"
            deltaImportQuery="SELECT id,userId,addtime,ShareImgUrl,TopicId,zbId,ShareUserId from zbuserrelation where id='${dataimporter.delta.id}'"                       
            query="SELECT id,userId,addtime,ShareImgUrl,TopicId,zbId,ShareUserId from zbuserrelation  where id&lt;140000000 and id>130000000 ">

            <entity name="zbuserinfo" 
                deltaQuery="SELECT id from zbuserinfo where addtime >='${dataimporter.last_index_time}'" 
                deltaImportQuery="SELECT nickname,sex,state,headimgurl from zbuserinfo where id = '${dataimporter.delta.id}'" 
                parentDeltaQuery="SELECT id from zbuserrelation where userId='${zbuserinfo.id}'"
                query="SELECT nickname,sex,state,headimgurl from zbuserinfo where id= '${zbuserrelation.userId}'" >

                <field column="nickname" name="nickname"/>
                <field column="sex" name="sex" />
                <field column="state" name="state" />
                <field column="headimgurl" name="headimgurl" />
            </entity>
    </entity>

关联表需要实体嵌套,如果是不相关表的话,是多个实体并列
managed-schema属性为

<!-- 字段 -->
    <field name="userId"  multiValued="false" indexed="true" stored="true" type="text_general" />
    <field name="zbId"  multiValued="false" indexed="true" stored="true" type="int" />
    <field name="ShareImgUrl"  multiValued="false" indexed="true" stored="true" type="string" />
    <field name="addtime"  multiValued="false" indexed="true" stored="true" type="date" />
    <field name="TopicId"  multiValued="false" indexed="true" stored="true" type="int" />
    <field name="ShareUserId"  multiValued="false" indexed="true" stored="true" type="int" />

    <field name="nickname"  multiValued="false" indexed="true" stored="true" type="string" />
    <field name="sex"  multiValued="false" indexed="true" stored="true" type="int" />
    <field name="state"  multiValued="false" indexed="true" stored="true" type="text_general" />
    <field name="headimgurl"  multiValued="false" indexed="true" stored="true" type="string" />

需要注意的是三个原始字段id,version,text不能删除掉
结果如下这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值