仅使用elasticsearch搜索特定字段

时间:2013-03-25 18:43:52

标签: elasticsearch elastica

如何判断Elasticsearch在按术语搜索时排除某个字段?

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

如果有任何方式专门针对Elastica (PHP Client)执行此操作会更有帮助,但原生ES会同样有用。

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

凯文史密斯 通过松饼制作认证

马克史密斯 摩托车跳跃认证。

当普通用户搜索摩托车时,不应返回任何内容,但如果他们搜索史密斯,则应返回。

能够搜索认证字段的用户如果搜索摩托车将返回Mark,如果他们搜索Smith,则返回两者。

1 个答案:

答案 0 :(得分:0)

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

我还没有测试过任何东西。