弹性搜索 - quering文件,其中两个阵列的相交非空
问题描述:
我有一个文件结构如下:弹性搜索 - quering文件,其中两个阵列的相交非空
{
"documentId": 123,
"someOtherInfo": {...}
"permissions": ["a", "b, ..., "g"]
}
用户本身具有权限集["x", "y", "z"]
。 业务规则:当且仅当至少有一个用户权限与文档权限匹配时,才允许用户A查看文档X.或者把数学上,如果路口不为空 -
["a", "b, ..., "g"] ∩ ["x", "y", "z"] ≠ ∅
我建立需要找到所有文档的用户访问搜索引擎。我想将它存储在Elastic Search中以提供所有优秀的查询功能,但是如何使用ES DSL添加对权限的限制?非常感谢。
答
您需要一个terms query其中可以传递其元素将被匹配的数组。这匹配包含任何提供的条款的文件。例如,以下内容将与包含权限= [“a”,“b”,“c”]但不是权限= [“a”,“t”,“c”]的文档相匹配
{
"query": {
"terms": {
"permissions": [
"x",
"y",
"z",
"b"
]
}
}
}