阻止弹性搜索在特定字段中搜索

时间:2015-07-16 13:39:17

标签: elasticsearch lucene

我们正在构建的程序使用elasticsearch作为搜索引擎。在我们的计划中,我们有一个基于角色的访问权限系统,允许一些用户查看某些字段,而其他用户无法看到它们。例如,所有用户都可以查看姓名和电话号码,但只有管理员才能看到银行帐户详细信息。现在,我希望能够让管理员搜索" 1234"并查找包含" 1234"的电话号码或银行帐户的所有文件,但只允许普通用户在电话号码内搜索。我怎么能这样做?

理想情况下,我想要的是在我的查询中包含类似这样的内容:

"fields_to_search": {
   { "firstname", "lastname", "telephone" }
}
"query" {
   "wildcard": {
      "_all" : "*1234*"
   }
}

这样的事情可能吗?

我之前见过的建议:   - 我可以更改设置include_in_all,但管理员也无法使用" _all"来搜索bankaccount。了;   - 我知道我可以使用"字段"指定要返回的字段,但我不想(由用户)搜索bankaccount;   - 我可以更改" source"的设置,但这不会更改正在搜索的字段。 - Multi_match;这里的问题是,这只能作为匹配查询,而我还需要排除字段" bankaccount"用于过滤器,通配符,范围等,

注意:我在这里给出的例子非常简单;实际上,有更多的角色而不仅仅是"用户"和#34;管理员",以及超过四个字段:我需要一个灵活的解决方案,我可以在其中更改要即时搜索的字段。

0 个答案:

没有答案