在 ElasticSearch 中强制执行过滤器
Forcing filter execution in ElasticSearch
有没有办法强制为每个查询执行(查询)过滤器,而不管它是否存在于搜索查询请求中?就我而言,我有一个本机搜索脚本,用于根据在 elasticsearch 实例外部维护的动态变化列表来过滤文档。由于我不控制所有查询服务器的客户端,我不能保证他们会正确地进行过滤或在请求中添加对脚本的引用,因此我想强制在 ES 服务器本身内执行过滤器。这(容易)可以实现吗? (我使用的是 ES 1.7.0/2.0)
TIA
如果用户可以向集群提交任意请求,那么您绝对无法阻止他们为所欲为。
你真的只有两个选择:
- 如果用户可以 select 任意 queries/filters,但您也控制他们访问的一个或多个索引,那么您可以使用 filtered aliases 来限制他们可以看到的内容。
- 使用 Shield(不是免费的)来防止任意访问以限制 indices/aliases 任何给定请求可以访问的内容(使用别名使用过滤器来隐藏数据)。
Aliases 绝对是要走的路。如果您需要为每个客户使用不同的过滤器并要求他与该别名交谈,请为每个客户创建一个别名。
有没有办法强制为每个查询执行(查询)过滤器,而不管它是否存在于搜索查询请求中?就我而言,我有一个本机搜索脚本,用于根据在 elasticsearch 实例外部维护的动态变化列表来过滤文档。由于我不控制所有查询服务器的客户端,我不能保证他们会正确地进行过滤或在请求中添加对脚本的引用,因此我想强制在 ES 服务器本身内执行过滤器。这(容易)可以实现吗? (我使用的是 ES 1.7.0/2.0)
TIA
如果用户可以向集群提交任意请求,那么您绝对无法阻止他们为所欲为。
你真的只有两个选择:
- 如果用户可以 select 任意 queries/filters,但您也控制他们访问的一个或多个索引,那么您可以使用 filtered aliases 来限制他们可以看到的内容。
- 使用 Shield(不是免费的)来防止任意访问以限制 indices/aliases 任何给定请求可以访问的内容(使用别名使用过滤器来隐藏数据)。
Aliases 绝对是要走的路。如果您需要为每个客户使用不同的过滤器并要求他与该别名交谈,请为每个客户创建一个别名。