RDBMS到弹性搜索

时间:2015-06-10 16:46:17

标签: mysql elasticsearch

假设我有5个名为groupspostsgroups_postspost_commentsposts_votes的表。

groups表包含以下字段:user_idnamedescriptionposts包含以下字段:user_id和{{1} }

commentgroups之间的关系是MANY_2_MANY,因此每个帖子可以属于多个组,每个组可以包含0- *帖子。这就是表posts的作用。

groups_posts表包含以下字段:post_commentstextpost_iduser_id(日期),added_at,{{1} }

total_comments表包含以下字段:total_votesposts_votespost_id(日期)

我想在弹性搜索中对这些结构进行建模。我需要根据帖子评论总数和这段时间后的投票总数快速搜索特定用户过去12小时内用户组(用户可以属于0- *组)的最热门帖子的主要原因。 / p>

您能否告诉我如何在弹性搜索索引上有效地映射它。

1 个答案:

答案 0 :(得分:0)

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

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

由于我们没有加入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