ES搜索的问题

ES搜索的问题

问题描述:

风间老师,关于es使用场景,有个问题比较疑惑


我有一个用户表(id,name),一个业务表(id,user_id , sort , others ),处于不同的数据库以及不同的微服务中;

在针对业务表进行搜索的时候会出现一种业务: 模糊搜索用户名,并根据业务中的某个字段或者计算结果排序


尝试过的解决方式:

  1. 直接在业务表冗余user_name,缺点是用户更名之后业务无感知,解决方案是用户微服务发布变更更通知到消息队列,业务方统一更新冗余;

  2. 使用模糊搜索关键字先在用户中心查找并返回所有符合条件的user_id,在业务中通过 in(userIdList)方式查找数据,但随着用户量增大,返回的id列表会极长;

  3. 使用es 构建一个《业务表所有列 + 用户名》的宽表,直接使用es进行检索;同样的问题在于用户名更新时,我如何去更新es记录里面 独立的用户名列(有没有类似方法?如有的话,某用户关联的记录过多是否会有性能问题?)


上面是我目前能想到的一些点,请教一下风间老师哪里可以改进,或者其他更好的方法?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
风间影月 2021-03-28 19:02:59

关联肯定不是太好。可以使用被动更新用户信息。也就是查询出来以后,如果点击这个用户名查看他的信息,那就去查询并且单独更新。因为用户昵称并不是一致性非常强的信息。我们有的场景就是这么做的。

  • 而且也不仅仅是es。mongodb或者redis有类似的也可以用被动的方式。
    2021-03-28 19:03:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师