【发布时间】:2020-09-28 16:04:44
【问题描述】:
我在 Elastic 中有如下文件。每个文档都有一些信息和访问该文档的所有强制权限。
当我查询时,我想传递所有用户权限并接收匹配的文档,但查询时遇到困难。
文件:
{
"id": 1,
"permissions": ["a", "d"]
}
{
"id": 2,
"permissions": ["a"]
}
{
"id": 3,
"permissions": ["a", "b"]
}
{
"id": 4,
"permissions": ["a", "c"]
}
这是我得到的最接近的:
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"tags.keyword": "a"
}
},
{
"match_phrase": {
"tags.keyword": "b"
}
},
],
"minimum_should_match": doc.tags.length
}
}
}
// Result are documents with id's 2 and 3.
我尝试用"script" 扩展"minimum_should_match" 但没有成功(显然它不支持它):
"script" : {
"script" : {
"inline": "doc['permissions'].length",
"lang": "painless"
}
}
在上面的示例中,使用传递的权限数组 ["a", "b", "c"],输出应该是 id 为 2、3 和 4 的文档。["a"] 仅匹配 id 为 2 的文档。
编辑:附加信息 一个文档最多有 5 个权限,以及用户,但是权限集非常大(500+),所以我正在搜索一个通用查询。数据也可以转换。
我正在使用 Elastic 7.6 任何帮助表示赞赏!
【问题讨论】:
标签: elasticsearch