2013-03-25 166 views
1

如何讓Elasticsearch在按術語搜索時排除字段?只使用elasticsearch搜索特定字段

我有一個用戶(姓名,電子郵件,認證,經驗,辦公室...)的索引,但只有某些人可以通過認證搜索用戶。在我目前的PHP Lucene實現中,我有2個單獨的索引,有或沒有這些數據。有沒有辦法只用一個用戶索引就可以做到這一點?我假設我需要應用某種過濾器[1][2],但沒有看到一個可以讓我完全忽略字段的過濾器。

如果有什麼特別的方法可以做到這一點,Elastica (PHP Client)會更有幫助,但本地ES將同樣有幫助。

說我有2個用戶在我的索引

凱文·史密斯 在鬆餅認證的摩托車跳躍製作

馬克·史密斯 認證。

當一個普通用戶搜索摩托車時,什麼都不應該返回,但是如果他們搜索史密斯都應該返回。

如果搜索認證字段的用戶搜索摩托車,並且他們搜索史密斯時都會返回標記。

+0

您可以控制您正在查詢的字段以及返回的內容。你忽略了一個領域意味着什麼?你能再詳細一點嗎? – javanna 2013-03-26 09:20:13

+0

抱歉,用戶搜索索引有10個字段,所以我希望能夠忽略或排除一個字段,同時仍然搜索其他字段。我唯一的選擇是列出我想要搜索的〜9個字段,而不是搜索一個字段? – Rockstar04 2013-03-27 14:27:39

+0

它更清晰,如果我是你,我會試着澄清這個問題。你在做什麼樣的查詢? – javanna 2013-03-27 15:24:59

回答

0

我還沒有測試過任何東西,但是您似乎可以在映射階段將「include_in_all」設置爲false。這意味着您的字段不會包含在「_all」中。然後,您只需在「_all」字段上進行查詢。 請注意,該字段仍然可用於搜索和索引,您可以通過在字段查詢中指定該字段進行查詢;它只是從「_all」參數中排除。

我再次沒有測試過任何東西。

相關問題