【问题标题】:ElasticSearch index per user?每个用户的 ElasticSearch 索引?
【发布时间】:2015-07-03 14:12:37
【问题描述】:

我需要使用 ElasticSearch 制作一个系统。

每个用户都有自己的文档,这些文档的范围只在其用户范围内。任何其他系统用户都无法访问任何用户文档。

问题是,最好的方法是什么,为每个用户创建一个索引,或者创建一个包含每个用户的所有文档的单个索引。

每个用户的文档上可能有其他用户没有的自定义元信息字段。

我知道通常建议使用带有用户别名的单个索引,但是我不明白如何在这个大索引中添加这个自定义用户的文档元信息。

例如,假设 userA 有两个文档被索引,而 userB 有 3 个文档。在我的系统中存在系统预定义的元信息作为文件名和描述,但是,系统允许每个用户定义每个自己的自定义元信息,例如:userA 可能在其文档上具有元信息颜色,而 userB 可能每个文档都有一个大小元信息字段。

我知道一种可能性是在单个索引上添加新字段,但是它可能超出范围。

最好的方法是什么?

谢谢大家。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    每个用户一个索引听起来你在某些时候会遇到麻烦 - 一旦你有很多用户(比如 10000 左右),每个索引的开销就会变得很大

    我不认为你需要这个 - 你可以通过使用嵌套字段允许每个用户的自定义属性 - 每个嵌套对象都将具有名称和值属性(可能是多个值属性),因此您可以进行任意搜索您的文档的元数据,而无需每次都更改映射。

    【讨论】:

    • 您能否描述一下每个索引的开销?关于依赖单个索引,您不认为拥有该索引但根本不使用它是一个问题吗?与每用户索引相比,这不是更多的开销吗?谢谢!
    猜你喜欢
    • 2012-09-16
    • 2015-08-03
    • 2020-06-14
    • 2017-05-02
    • 2020-07-24
    • 2019-10-27
    • 1970-01-01
    • 2021-10-02
    • 2017-10-06
    相关资源
    最近更新 更多