performance - Elasticsearch:为每个用户的私人搜索选择索引策略
问题描述
例如,我有 1000 个用户。每个用户的数据不大,最大1GB。所以我有两种索引策略。
- 大索引:我将有一个单一的索引。然后每次用户搜索一些数据时,我都会
user_id
在查询中添加一个。 - 小型索引:每个用户都是一个 Elasticsearch 索引。因为数据并不庞大,我们只需要 1-2 个分片。
我的意见是第二种方法要快得多,因为我们不需要添加user_id
到查询中。第一种方法可能会更慢,因为它会去很多分片,同时它必须计入user_id
查询。
但是,有一些ref1 ref2他们建议我们应该保持分片的总数相对较小。
在实际环境中,我的情况有什么好的解决方案?
解决方案
为每个用户创建一个索引是一种资源浪费,特别是如果您有 1000 多个用户。如果您的应用程序成功并且您的用户群增长,那么索引数量和分片数量也会随之增加。即使每个索引只有一个分片,拥有 1000 个分片也已经消耗了相当多的资源。
拥有一个索引并使用一个user_id
字段将所有用户放入其中以区分每个用户的数据会更有效。
推荐阅读
- javascript - 如何使用 javascript 更改选择选项?
- javascript - 从下到上对数组进行排序并反转。只获取总数组的 10%
- json - 在字符串中插入变量
- r - R KNN 中未使用的参数
- oracle - 如何在过程中使用乐观锁定?
- python - pymongo - 搜索包含 $ 和运算符不区分大小写的文档的集合
- powershell - 在 Youtube 上使用 powershell 获取推荐视频
- c++ - 如何使用 strtok() 函数改进搜索?
- android - 未经验证的用户可以登录到应用程序。如何预防?
- oracle - 如何在 Oracle Enterprise Manager (OEM) 中获取函数的 DDL/源代码