假设我有5个名为groups
,posts
,groups_posts
,post_comments
和posts_votes
的表。
groups
表包含以下字段:user_id
,name
和description
,posts
包含以下字段:user_id
和{{1} }
comment
和groups
之间的关系是MANY_2_MANY,因此每个帖子可以属于多个组,每个组可以包含0- *帖子。这就是表posts
的作用。
groups_posts
表包含以下字段:post_comments
,text
,post_id
,user_id
(日期),added_at
,{{1} }
total_comments
表包含以下字段:total_votes
,posts_votes
和post_id
(日期)
我想在弹性搜索中对这些结构进行建模。我需要根据帖子评论总数和这段时间后的投票总数快速搜索特定用户过去12小时内用户组(用户可以属于0- *组)的最热门帖子的主要原因。 / p>
您能否告诉我如何在弹性搜索索引上有效地映射它。
答案 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