我想知道是否有数千个不同的索引是个坏主意?
我正在基于ElasticSearch向我的网络应用添加搜索页面。搜索页面允许用户通过过滤许多不同的索引标准(名称,位置,性别等)来搜索站点上的其他用户。这是相当简单的,只需要一个索引,其中包含该站点的每个用户的文档。
但是,我还要创建一个页面,用户可以在其中查看他们关注的所有其他用户的列表。我希望此页面具有搜索页面上可用的相同过滤选项。我想知道一个好的方法是为每个用户创建一个单独的索引,包含他们关注的每个用户的文档吗?
答案 0 :(得分:5)
虽然你可以在elasticsearch中创建数千个索引,但我并不认为在你的用例中需要它。我认为你可以使用一个索引。只需为主用户记录创建一个额外的child type followers
即可。用户A
每次关注用户B
时,都会创建B
的子记录,其中包含以下内容:{"followed_by" : "A"}
。要获取当前用户关注的用户列表,您只需向查询添加Has Child Filter即可。
答案 1 :(得分:5)
我想补充一下Igor的答案,即在一个小集群(一个或两个节点)上创建数千个索引会导致一些缺点。 索引的每个分片都是一个完整的Lucene实例。也就是说,如果您有一个节点(或一个小型集群 - 在节点方面),您将拥有许多已打开的文件(可能打开的文件太多)。
这是我不能定义太多索引的主要原因之一......