Elasticsearch:为每个用户的私人搜索选择索引策略



例如,我有1000个用户。每个用户的数据都不大,最大为1GB。所以我有两个索引策略。

  • 大索引:我将有一个单独的索引。然后,每当用户搜索一些数据时,我都会在查询中添加一个user_id
  • 小型索引:每个用户都是一个Elasticsearch索引。因为数据并不庞大,我们只需要1-2个碎片

我认为第二种方法要快得多,因为我们不需要在查询中添加user_id。第一种方法可能较慢,因为它将去往许多碎片,同时,它必须在查询中计算user_id

然而,有一些ref1 ref2建议我们应该保持碎片的总数相对较小。

在一个实际的环境中,什么是解决我这种情况的好办法?

为每个用户创建一个索引是浪费资源,尤其是当您有1000多个用户时。如果你的应用程序成功了,用户群也在增长,那么索引的数量和碎片的数量也会随之增加。即使每个索引有一个碎片,拥有1000个碎片也已经消耗了相当多的资源。

有一个单独的索引,并用user_id字段将所有用户放入其中,以区分每个用户的数据,这样效率会高得多。

最新更新