每个用户的 ElasticSearch 索引?

标签 elasticsearch

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

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

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

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

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

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

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

最好的方法是什么?

谢谢大家。

最佳答案

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

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

关于每个用户的 ElasticSearch 索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31154412/

相关文章:

node.js - Mongoose 没有生活联系

java - ElasticSearch 是如何计算内存压力的?

elasticsearch - Elasticsearch查询:对两个字段进行范围查询,但一个是可选字段

elasticsearch - Metricbeat到远程服务器上的Logstash无效

Elasticsearch - 什么是索引过程?

elasticsearch - 如何在elasticsearch中实现区分大小写的搜索?

elasticsearch - 如何在Grafana中实现完全匹配查询

ruby - 如何使用 Logstash 配置文件将 Logstash 中的字段设置为 "not_analyzed"

elasticsearch - 无论如何,是否有阻止访问Elasticsearch内置API(例如/_nodes)的信息? ,/_ cluster,/_ cat等?

mongodb - 如何使用logstash将mongodb与elasticsearch连接起来?