用户可以使用专用端点来传递查询。他可以自由地为所有字段指定任何查询和过滤器。但是在端点将搜索请求重定向到Elasticsearch服务器之前,我想在顶部应用另一个过滤器,以限制对特定结果集的访问。您可以将其视为授权过滤器:用户X只能访问链接到其用户ID的对象。
我从接受 war 查询的端点开始:
var query = "{\"match\":{\"firstname\":\"John\"}}"
var searchResponse = await _client.SearchAsync<users>(s => s
.From(0)
.Size(10)
.Query(q =>
q.Raw(query))
);
有没有办法修改此查询的筛选器以限制对此调用的访问?也许甚至有更聪明的方法来解决这个问题。
最佳答案
如果您希望自动将过滤器应用于搜索请求,则可以使用filtered aliases来实现。但是请记住,过滤后的别名不是授权的综合功能。
关于elasticsearch - ElasticSearch:在NEST中的用户提供的查询上应用过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55222221/