如何判断Elasticsearch在按术语搜索时排除某个字段?
我有一个用户索引(姓名,电子邮件,证书,经验,办公室......),但只有某些人可以通过认证搜索用户。在我目前的PHP Lucene实现中,我有2个单独的索引,包含和不包含该数据。有没有办法只用一个用户索引就可以做到这一点?我假设我需要应用某种过滤器[1] [2],但是没有看到允许我完全忽略某个字段的过滤器。
如果有任何方式专门针对Elastica (PHP Client)执行此操作会更有帮助,但原生ES会同样有用。
假设我的索引中有2个用户
凯文史密斯 通过松饼制作认证 马克史密斯 摩托车跳跃认证。当普通用户搜索摩托车时,不应返回任何内容,但如果他们搜索史密斯,则应返回。
能够搜索认证字段的用户如果搜索摩托车将返回Mark,如果他们搜索Smith,则返回两者。
答案 0 :(得分:0)
我没有测试任何东西,但似乎你可以在映射阶段将“include_in_all”设置为false。这意味着您的字段不会包含在“_all”中。然后你只需要对“_all”字段进行查询。 请注意,该字段仍可用于搜索和索引,您可以通过在字段查询中指定它来查询它;它只是从“_all”参数中排除。
我还没有测试过任何东西。