【发布时间】:2015-03-24 07:14:13
【问题描述】:
我有一个论坛应用程序。论坛中有多个主题(帖子)。每个主题都有viewCount(论坛用户查看该主题的次数)等字段。
我希望主题的所有字段都取自 ES(id、日期、标题、内容和 viewCount)。但是,在这种情况下,在每个主题视图之后,ES 必须再次重新索引整个文档。
我问了关于堆栈溢出时部分更新的问题 - Partial update on field that is not indexed。需要注意的是,viewCount 字段没有被索引,它只是存储在 ES 中。
有两个术语 - 部分更新和部分索引。 ES 中有部分更新,您只能更改几个字段。但是没有部分重新索引,这意味着即使您只更改一个字段,ES 也会重新索引整个文档。这意味着如果该主题被查看 1000 次,ES 将索引它 1000 次。如果我有很多用户,很多文档会一次又一次地被索引。这是第一个策略。
第二种策略是将主题的一些字段保留在索引中,而将一些字段保留在数据库中。在这种情况下,我可以从 DB 中获取 viewAcount。此外,我可以将所有字段存储在数据库中,并将索引仅用作 INDEX,即获取当前主题的 id。
解决此类问题的最佳方法是什么?
【问题讨论】:
标签: elasticsearch