当前位置: 首页 > 知识库问答 >
问题:

用elasticsearch分离数据访问

龚弘业
2023-03-14

我刚刚开始了解弹性搜索,我想知道它是否适合我的情况:

考虑一个系统,公司(有多名员工)可以注册和管理他们的客户,并向他们的客户发送文件。

现在,我想让公司能够搜索他们的文档,但只搜索他们的文档,而不是其他公司的文档。换言之:如何分离这些公司的数据进行搜索?如何使用elasticsearch实现这一点?

这种分离是由elasticsearch本身处理的吗?一、 e.我的系统中的公司和elasticsearch的相关用户之间有一些映射。还是由我的系统后端处理?一、 e.后端以某种方式决定(如何?)仅显示该特定公司的搜索结果。因此,只有一个用户,即我系统的后端,可以访问和过滤elasticsearch的结果。但这合理吗?

我相信有很多关于这个的信息。请给我一个提示,因为我不知道该搜索什么。例如,对弹性搜索身份验证/授权的搜索只会产生关于谁可以访问整个搜索系统的结果,而不是解决这种分离的模式

提前感谢!

共有1个答案

印辉
2023-03-14

Elasticsearch本身不支持授权和身份验证,您需要通过插件添加,我知道其中有两个插件。Shield是官方解决方案,它是X-Pack的一部分,如果你想使用它,需要支付弹性费用。SearchGuard是一种开源的替代产品,您可以购买企业升级。这两种方法都可以为不同的用户定义细粒度的访问权限。你可能想做的是给每个公司一个他们自己的文档索引,然后限制他们的用户只能读/写那个索引。或者,如果您绝对希望所有文档都包含在一个索引中,也可以添加文档级别的限制,这样每个人都可以查询相同的索引,但只能得到为其公司返回的结果。这取决于你希望为多少家公司提供服务,为了避免有太多的指数和碎片,这可能更有意义,但我怀疑,每个公司的指数将是最好的方式。

如果没有这些插件,您将需要求助于超文本传输协议层的某些东西,例如nginx反向代理,它根据url中包含的索引名称或其他东西过滤请求,但我强烈建议不要这样做,那样会很痛苦!

 类似资料:
  • 主要内容:语法,实例SQLite 的 DETACH DATABASE 语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用 ATTACH 语句附加的。如果同一个数据库文件已经被附加上多个别名,DETACH 命令将只断开给定名称的连接,而其余的仍然有效。您无法分离 main 或 temp 数据库。 如果数据库是在内存中或者是临时数据库,则该数据库将被摧毁,且内容将会丢失。 语法 SQLite 的 DET

  • 问题内容: 我正在Django中编写一个项目,我发现文件中有80%的代码。这段代码令人困惑,并且在一段时间之后,我不再了解实际发生的事情。 这是困扰我的事情: 我发现模型级别(应该只负责处理数据库中的数据)在发送电子邮件,使用API​​到其他服务等方面也很丑陋。 另外,我发现在视图中放置业务逻辑也是不可接受的,因为这样很难控制。例如,在我的应用程序中,至少有三种方法来创建的新实例,但从技术上讲,它

  • null 我的数据库的实体,持久性级别:我的应用程序保留哪些数据? 我的应用程序的实体,业务逻辑级别:我的应用程序做什么? 在Django有哪些实施这种办法的良好做法?

  • V9数据模型功能,允许用户把不同的数据表,分离到不同的数据库服务器上。以实现负载的分离,更加的符合大访问网站的需求。 数据分离方法 1.数据库连接配置 配置文件路径:caches\configs\database.php return array ( 'default' => array ( 'hostname' => 'localhost', 'database' => 'phpcm

  • 我有一个包括客户篮子的数据集。我想用一个来分割每个用户篮。因此,我有一个列表,其中我应该使用一个循环来获得一个,以便在pandas矢量化中使用它,如下所示: 我使用函数而不是,但它确实很慢。 根据我的orders列表,它包括百万个元素,我应该使用orders列表的元素来获取用户的篮子。 实际上,我想通过来分割每个用户的篮子,而要这样做,我需要对大小为4000000的orders列表进行迭代,所以这

  • 我已经用下面的代码获得了训练集和测试集的索引。 我想知道是否有更快的方法可以使用我检索到的行索引将它们分别分成两个数据帧。