1

我如何告诉 Elasticsearch 在按术语搜索时排除某个字段?

我有一个用户索引(姓名、电子邮件、认证、经验、办公室...),但只有某些人可以通过认证搜索用户。在我当前的 PHP Lucene 实现中,我有 2 个单独的索引,其中包含和不包含该数据。有没有办法只用一个用户索引来做到这一点?我假设我需要应用某种过滤器[1] [2],但没有看到可以让我完全忽略一个字段的过滤器。

如果有任何专门使用Elastica(PHP 客户端)的方法会更有帮助,但原生 ES 也同样有帮助。

假设我的索引中有 2 个用户

凯文史密斯松饼制作认证

Mark Smith 获得了摩托车跳跃认证。

当普通用户搜索motorcycle时,不应返回任何内容,但如果他们搜索Smith,则应返回两者。

具有搜索认证字段能力的用户在搜索摩托车时将返回 Mark,如果搜索 Smith,则两者都返回。

4

1 回答 1

0

我没有测试任何东西,但似乎您可以在映射阶段将“include_in_all”设置为 false。这意味着您的字段不会包含在“_all”中。然后你只需要对“_all”字段进行查询。注意该字段仍然可以搜索和索引,您可以通过在字段查询中指定它来进行查询;它只是从“_all”参数中排除。

同样,我还没有测试任何东西。

于 2014-01-22T08:37:20.507 回答