【发布时间】:2013-03-25 18:43:52
【问题描述】:
如何告诉 Elasticsearch 在按字词搜索时排除字段?
我有一个用户索引(姓名、电子邮件、证书、经验、办公室...),但只有某些人可以通过证书搜索用户。在我当前的 PHP Lucene 实现中,我有 2 个单独的索引,其中包含和不包含该数据。有没有办法只用一个用户索引来做到这一点?我假设我需要应用某种过滤器[1][2],但没有看到可以让我完全忽略某个字段的过滤器。
如果有任何具体的方法可以使用 Elastica (PHP Client) 来实现这一点,那将会更有帮助,但原生 ES 也同样有帮助。
假设我的索引中有 2 个用户
凯文·史密斯 松饼制作认证
马克·史密斯 获得摩托车跳跃认证。
当普通用户搜索motorcycle时,不应该返回任何内容,但如果他们搜索Smith,则两者都应该返回。
具有搜索认证字段能力的用户在搜索摩托车时将返回 Mark,如果搜索 Smith,则两者都返回。
【问题讨论】:
-
您可以控制要查询的字段和返回的字段。忽略一个字段是什么意思?你能详细说明一下吗?
-
对不起,用户搜索索引有大约 10 个字段,所以我希望能够忽略或排除一个字段,同时仍然搜索其他字段。我唯一的选择是列出我想要搜索的〜9个字段而不是搜索一个吗?
-
这更清楚,如果我是你,我会尝试澄清这个问题。你在做什么类型的查询?