我需要使用 ElasticSearch 制作一个系统。
每个用户都有其文档,这些文档的范围仅在其用户范围内。任何其他系统用户都无法访问任何用户文档。
问题是,最好的方法是什么,为每个用户创建一个索引,还是创建一个包含每个用户的所有文档的索引。
每个用户可能在其文档上拥有其他用户没有的自定义元信息字段。
我知道通常建议使用带有用户别名的单个索引,但是我不明白如何在这个大索引中添加此自定义用户的文档元信息。
例如,假设 userA 有两个已索引的文档,而 userB 有 3 个文档。在我的系统中存在系统预定义的元信息作为文件名和描述,但是,系统允许每个用户定义每个自己的自定义元信息,例如:用户A可能在其文档上有元信息颜色,而用户B可能有元信息颜色。每个文档都有一个大小元信息字段。
我知道一种可能性是在单个索引上添加新字段,但是,它可能超出范围。
最好的方法是什么?
谢谢大家。
最佳答案
每个用户一个索引听起来好像您会在某些时候遇到麻烦 - 一旦您拥有大量用户(例如 10000 左右),每个索引的开销就会变得很大
我认为你不需要这个 - 你可以通过使用嵌套字段来允许基于每个用户的自定义属性 - 每个嵌套对象将具有名称和值属性(可能是多个值属性),因此你可以任意搜索文档的元数据,无需每次都更改映射。
关于每个用户的 ElasticSearch 索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31154412/