在elastic search中,如何设计“搜索我关注的人发布的帖子标题”这个需求?

如题,在elastic search中,如何设计“搜索我关注的人发布的帖子内容”这个需求?

现在mysql的结构是:
-POST
*id
*user_id
*title
*text

-FOLLOW
*from_user_id
*to_user_id

查询条件是标题title,请问ES中如何搜索我关注的人发布的帖子?

阅读 1.7k
1 个回答
  1. 只描述了mysql的结构,没有描述es的结构。
    如果将follow表的内容作为post的子结构保存在es里面,那么需要nested关键字查询,不过这种设计数据同步负荷很重,不推荐。
  2. 考虑post表和follow表单独同步到es为两个独立的indices,那么需要两次查询。第一次查询出来我关注的人的user_id,作为第二次查询的input。第二次查询如下:
GET post/_search
{
  "query": {
    "bool" : {
      "must" : {
        "term" : { "title" : "<查询条件标题title>" }
      },
      "must" : {
        "terms": {
          "user_id": [ <我关注的人的id列表> ]
        }
      },
  }
}

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进