用户可以使用专用端点来传递查询。他可以自由地为所有字段指定任何查询和过滤器。但是在端点将搜索请求重定向到Elasticsearch服务器之前,我想在顶部应用另一个过滤器来限制只访问一组特定的结果。您可以将其视为授权过滤器:用户X只能访问链接到其用户ID的对象。
我开始使用端点接受战争查询:
var query = "{\"match\":{\"firstname\":\"John\"}}"
var searchResponse = await _client.SearchAsync<users>(s => s
.From(0)
.Size(10)
.Query(q =>
q.Raw(query))
);
有没有办法修改此查询的过滤器以限制此调用的访问?或者甚至可以采用更聪明的方法来解决这个问题。
如果您希望自动将过滤器应用于搜索请求,则可以使用filtered aliases执行此操作。但请记住,过滤的别名不是授权的全面功能。