【问题标题】:RDBMS to Elastic SearchRDBMS 到弹性搜索
【发布时间】:2015-06-10 16:46:17
【问题描述】:

假设我有 5 个表,分别名为 groupspostsgroups_postspost_commentsposts_votes

groups 表具有字段:user_idnamedescriptionposts 具有字段:user_idcomment

groupsposts 之间的关系是 MANY_2_MANY,因此每个帖子可以属于多个组,每个组可以包含 0-* 个帖子。这就是表groups_posts 所做的。

post_comments 表包含以下字段:textpost_iduser_idadded_at(日期)、total_commentstotal_votes

posts_votes 表包含以下字段:post_iduser_idvote_at(日期)

我想在 Elastic Search 中对这些结构进行建模。我需要快速搜索用户组(用户可以属于 0-* 组)中最近 12 小时内特定用户的最热门帖子的主要原因是根据帖子 cmets 的总和以及这段时间内的帖子投票。

您能否告诉我如何有效地将其映射到 Elastic Search 索引上。

【问题讨论】:

    标签: mysql elasticsearch


    【解决方案1】:

    我认为你必须做出一些决定。

    首先,您可以为每天创建一个索引,以便在运行当天的查询时只搜索一个索引。

    由于我们在 elasticsearch 中没有连接,因此您需要将与数据相关的数据聚合在一起,例如将与用户相关的所有数据放在一起,这样您的数据将如下所示:

    [
      {
        "user_id":123,
        "groups": [
           {
             "name":"my group",
             "posts_by_user":[ // only comments by this user
               {
                 "content": "foo bar baz",
                 "votes":5
               },
               {
                 "content": "bar baz quux",
                 "votes": 43
               },
               ... other posts by this user in this group
             ]
           },
           ... other groups 
        ]
      },
      ... other users
    

    另外:请阅读:https://www.elastic.co/guide/en/elasticsearch/guide/current/modeling-your-data.html

    【讨论】:

    • 感谢您的回答,还有一个问题 - 如果我对每天的索引数据不感兴趣,但我需要在数据范围内查找帖子 - 现在(搜索时的日期/时间发生)-12 小时?这种情况下如何组织索引?
    • 还有一件事 - 我搜索的不是用户帖子(由该用户发布),而是发布到该用户关注的组中的帖子(通过与 MANY_2_MANY 关联的 groups_posts 表关系)
    猜你喜欢
    • 2021-11-23
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2020-03-29
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    相关资源
    最近更新 更多