elasticsearch,web-applications,Mysql,elasticsearch,Web Applications" /> elasticsearch,web-applications,Mysql,elasticsearch,Web Applications" />

Mysql 基于用户的elasticsearch建模

Mysql 基于用户的elasticsearch建模,mysql,elasticsearch,web-applications,Mysql,elasticsearch,Web Applications,我想将elasticsearch添加到目前基于mysql的现有webapp中 为了简化,我的应用程序是一种博客容器:每个用户都写一些文章,这些文章可以是公开的,也可以是私有的。 一旦一个用户订阅了另一个,他的时间线就会被它和他朋友的帖子填满。帖子可以被评论或评级。评论也可以评分。 现在,我需要在elasticsearch中为这些时间线编制索引,因为我想根据帖子和评论内容、帖子和评论评级以及用户数据提供一个好的搜索引擎,但我在找出如何最好地建模我的elasticsearch索引时遇到了一些麻烦

我想将elasticsearch添加到目前基于mysql的现有webapp中
为了简化,我的应用程序是一种博客容器:每个用户都写一些文章,这些文章可以是公开的,也可以是私有的。 一旦一个用户订阅了另一个,他的时间线就会被它和他朋友的帖子填满。帖子可以被评论或评级。评论也可以评分。
现在,我需要在elasticsearch中为这些时间线编制索引,因为我想根据帖子和评论内容、帖子和评论评级以及用户数据提供一个好的搜索引擎,但我在找出如何最好地建模我的elasticsearch索引时遇到了一些麻烦

显然,“时间线”和“帖子”之间的关系是多对多的,因为根据社交图,每个用户的时间线可能包含多篇帖子

阅读elasticsearch文档,我发现了一些不同的解决方案,但我不确定其中是否有人

  • 非规范化。
    我的第一次尝试是以这种方式对数据进行非规范化:在ES索引中创建一个“post”类型,并将其与“timeline”的父子关系相链接。 通过这种方式,我没有重复的帖子,但我为每个用户关系都有一个“时间线”对象。此外,作为一个rdbms用户,我以为每个用户只有一个时间线对象,但不幸的是,这不是真的:elasticsearch为每个帖子创建一个时间线对象,具有相同的id值,但路由不同(但这可能是我的错,因为我对ES非常陌生)
  • 基于用户的数据
    另一种方法是基于用户的数据,即为每个用户创建(假)索引。但同样,根据文档,我看到用户和时间线之间的关系是一对多(参考:) 我错过什么了吗
  • 所以,简单回顾一下:我的应用程序有用户、帖子、评论和评级。用户的时间线由订阅的用户帖子组成。因为帖子可以是私人的——也就是说,只有订阅的用户才能阅读,所以我想根据“时间线”进行搜索。为此,我想将我的数据建模为elasticsearch

    最好的建模方法是什么