我的文档结构如下:
{
"documentId": 123,
"someOtherInfo": {...}
"permissions": ["a", "b, ..., "g"]
}
用户本身有一个权限集["x", "y", "z"]
。业务规则:当且仅当至少有一个用户权限与文档权限匹配时,才允许用户A查看文档X。或者从数学上讲,如果交集不为空-
["a", "b, ..., "g"] ∩ ["x", "y", "z"] ≠ ∅
我正在建立一个搜索引擎,需要找到所有文件的用户有权访问。我想将它存储在Elastic Search中,以获得它提供的所有强大的查询功能,但是如何使用ES DSL添加权限限制?非常感谢。
发布于 2017-08-25 01:05:45
您需要一个terms query,其中可以传递要匹配其元素的数组。这与包含任何所提供术语的文档相匹配。例如,以下内容将匹配包含权限= "a","b","c“但不包含权限= "a","t","c”的文档
{
"query": {
"terms": {
"permissions": [
"x",
"y",
"z",
"b"
]
}
}
}
https://stackoverflow.com/questions/45864297
复制相似问题