跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请求一个 Elasticsearch 的一个问题
未分類
20 4 月 2020

请求一个 Elasticsearch 的一个问题

请求一个 Elasticsearch 的一个问题

資深大佬 : yangyifan 18

我有一个 index 索引用于保存文章的信息。当用户“收藏”了文章,我会把收藏的关联关系放到关系型数据库里(比如:mysql ),当需要实现一个用户收藏的文章列表这样的接口时,应该怎么做是最好的? 我能想到的有两种方案:

  • 数据库和 Elasticsearch 都保存关联,查询的时候直接从 Elasticsearch 去查询。
  • 把数据库里收藏根据规则查询出来,然后在 Elasticsearch 里去 terms query 查询。

第一种方案的优缺点:

  • 优点:查询的时候方便。
  • 缺点:我能想到的是可能出现更新状态上的问题,仅仅是猜测,没有实际试验过。

第二种方案的优缺点:

  • 优点:数据准确性。
  • 缺点:如果我在查询某一篇文章的时候还需要返回一个 “是否已经收藏” 状态的时候,还需要查询一次数据库,感觉有点浪费。

求大神一个比较好的方案。

大佬有話說 (4)

  • 資深大佬 : aureole999

    第一种的话你是准备在文章的 index 里加个被哪个用户收藏的 field 的吗?还是新建一个用于关联的 index ?
    后者的话好像查询也不会太方便。前者的话如果文章经常被收藏和取消收藏的话每次都得重建文章的索引,不好吧?
    ES 好像即使文章部分没改也会重建整个文档的索引吧

  • 資深大佬 : aec4d

    一估计没实际用过 ES,es 有 join. 而且不需要重建。数据量不大的情况下第二种有优势,实现非常简单,性能可以接受,不需要考虑同步问题
    数据量大另说

  • 主 資深大佬 : yangyifan

    @aureole999 #1 第二种,第一种有点得不偿失了。

  • 主 資深大佬 : yangyifan

    @aec4d 谢谢,我尝试一下

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具