我正在使用ElasticSearch 7.1.1
作为全文本搜索引擎。开始时,所有用户都可以访问所有文档。我想让用户可以编辑文档。文档的修改后的版本仅对编辑者可用,其他所有人只能查看默认文档。
为此,我将向每个文档添加两个数组:
每次有人编辑文档时,我都会:
这样,在索引中,我将拥有三种类型的文档:
我不仅使用ElasticSearch来获取文档,而且还使用它来计算实时聚合(例如某个字段的总和),因此在查询时我将能够获取用户特定的文档。
我不希望进行大量修改,少于文档总数的1%。
是否有一种更智能,查询强度更低的方法来获得相同的结果?
答案 0 :(得分:1)
您可以实现document level security。
以此,您可以定义角色,以限制对与查询匹配的某些文档的读取权限(例如,您可以使用文档的ID)。
因此,您不必更新角色,而是分别通过将角色授予特定用户的角色来更新,而不必通过建议的阵列解决方案来每次更新文档。当然,这将要求每个用户都有一个Elasticsearch用户。
据我所知,此功能是满足 Elasticsearch 要求“即开即用”的表格的唯一解决方法。
希望我能为您提供帮助。