我正在搜索过滤在Elasticsearch索引中可以看到用户的内容,此外,我想将一些文档过滤到嵌套对象中。
我将解释一个简短的场景: 我们有两个用户:Alice和Bob 爱丽丝在X上工作,鲍勃在Y上工作 我们获得了有关电影的文档: 例: 名称:矩阵 年:1999 演员:[基努·里维斯,劳伦斯·菲什伯恩]
现在,我想过滤在actors字段中可以看到Alice和Bob的内容。 例如,X上的工作人员可以看到Keanu Reeves,Y上的工作人员可以看到Laurence Fishburne。
为此,我试图使用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"}}}]}}"}
}
要按已知的角色或工作过滤文档,我想按工作在嵌套对象中进行过滤,但是我不知道如何将此过滤器添加到以前的模板中。
有人有主意吗?