我正在搜索过滤在 Elasticsearch 索引中可以看到用户的内容,此外我想将一些文档过滤到嵌套对象中。
我将解释一个简短的场景:我们有两个用户:Alice 和 Bob Alice 在 X 上工作,Bob 在 Y 上工作 我们有关于电影的文档:示例:姓名:矩阵日期:1999 年演员:[基努·里维斯,劳伦斯·菲什伯恩]
现在我想过滤在演员字段中可以看到 Alice 和 Bob 的内容。例如,在 X 上工作的人可以看到基努·里维斯,在 Y 上工作的人可以看到劳伦斯·菲什伯恩。
为此,我正在尝试使用 X-Pack 安全属性,但我遇到了一些问题,也许你会帮助我。
有我的索引映射:
{
"settings": {
"index": {
"number_of_replicas": 0,
"number_of_shards": 1
}
},
"mappings": {
"properties": {
"security_attributes": {
"properties": {
"level": {"type":"short"},
"jobs": {"type":"keyword"},
"min_jobs": {"type":"short"}
}
},
"name":{"type":"text"},
"date":{"type":"text"},
"actors":{"type":"nested",
"properties":{
"security_attributes":{
"properties":{
"level": {"type":"short"},
"jobs": {"type":"keyword"},
"min_jobs": {"type":"short"}
}
},
"name":{ "type": "string"}
}
}
}
}
}'
我尝试在用户角色中授予查询模板。
{"template":
{"source":"
{"bool":
{"filter":
[{"range":
{"security_attributes.level":
{"lte": "{{_user.metadata.level}}"}}},
{"terms_set":{"security_attributes.jobs":
{"terms":{{#toJson}}_user.metadata.jobs{{toJson}},
"minimum_should_match_field": "security_attributes.min_jobs"}}}]}}"}
}
要按工作的角色或作业过滤文档,我知道我想按作业在嵌套对象内过滤,但我不知道如何将此过滤器添加到以前的模板中。
有人有想法吗?