我试图创建一个安全过滤器,以排除某些用户在ElasticSearch中看到某些文档。例如,如果一个文档包含“abc:123”和“abc:xyz”,那么用户的配置文件中必须同时包含这两个文档才能查看该文档。我们正在使用小胡子模板创建这个动态。我的第一次尝试是这样的:
"bool": {
"filter": {
"bool": {
"minimum_should_match": 1,
"should": {
"bool": [{
"must_not": {
"prefix": {
"controlSet": "ABC:"
}
}
},{
"must": {
"terms": {
"controlSet": ["ABC:123","ABC:XYZ"]
}
}
}]
}
}
}
}
但是,我很快意识到,这将允许拥有一个控件的用户查看具有多个控件的文档。文档必须具有用户必须匹配的控件的子集。因此,如果用户只有“abc:xyz”,即使文档也包含“abc:xyz”,他们也不应该看到包含“abc:123”的文档。
有没有一种方法可以实现这一点,而我却错过了?目前,我们枚举系统中的所有控件,并将它们添加到must_not中,但控件定期更改,我不想手动维护该列表。
假设您的文档如下所示:
{
...
"controlSet": ["ABC:123", "ABC:XYZ"],
...
}
并且ControlSet
是关键字
字段,则下面的查询应该可以实现:
{
"bool": {
"filter": {
"terms": {
"controlSet": ["ABC:123", "ABC:XYZ"]
}
}
}
}
它将与ControlSet
至少具有abc:123
和abc:xyz
的ControlSet
的文档匹配
我正忙于在Java Spring中为ElasttiSearch创建过滤查询。我有以下Elasticsearch映射: Elasticsearch中的数据如下所示:
不返回任何文档。我还没有展开以包括字段。 我希望at仍然至少返回一个文档,但什么也没有显示。有人对我做错了什么(或者我如何做得更好)有什么建议、建议或指导吗?
我是elasticsearch的新手,所以我的问题是: 提前致谢:)
是否有可能在实体上实现ApiResource安全性,以便没有实体id的GET请求(即集合操作)只返回与当前已验证用户匹配的项(或为此目的,必须针对每个实体检查的任何其他规则)? 我到目前为止的实现: 上面的代码适用于项操作,但不适用于集合运算符,即假设用户ID。%1(非管理员)已通过身份验证: get返回用户#1数据200 OK(根据需要) get返回403禁止(根据需要,用户1应该无法获取其他用
我是Elasticsearch的新手,我试图创建一个过滤器来检索具有特定属性的文档。 属性在映射中定义为嵌套对象,如下所示: 我试图以以下形式执行一个复杂的查询: 这是elasticsearch 2.x。我做错了什么?
我试图构造一个ElasticSearch查询,但没有得到预期的结果。任何帮助都将不胜感激! 映射详细信息: null null 目前,每个嵌套的轮班文档都包含一个嵌套的calendarBlock文档,其中包含开始和结束日期时间字段,以及一个可以注册该轮班的最大志愿者人数字段。 查询 我试图构造的查询是经过筛选的查询。从Web上的窗体传入查询字符串。然后,我需要以编程方式将至少三个筛选器附加到这个查