2016-12-13 42 views
0

我索引一個非常簡單的項目有場定義爲這樣:Elasticsearch 5.0.2未能搜索關鍵字

"comid": { 
    "type": "keyword", 
    "store": "false", 
    "index": "no", 
    "include_in_all": false, 
    "doc_values": false 
} 

我那麼攝入的單個項目,其中comid =「這是一個id」 當我與查詢精確匹配項目「這是一個id」

我得到這個錯誤:

cannot search on field [comid] since it is not indexed 

也許我誤解的文件,但我認爲,我們能夠搜索關鍵字(U唱完全匹配)?

我想我可以通過改變關鍵字到文本的類型,然後使用關鍵字分析器(如果我正確地理解它的話是noop)來解決這個問題,但是對於每個關鍵字類型字段,這似乎很奇怪。

我必須在這裏丟失一些明顯的東西嗎?

回答

0

如果沒有編制索引,則字段數據僅存儲在文檔中,而不是索引,因此您無法使用該字段進行搜索。

參見:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index.html

+0

如果我用「指數」重新索引:真的,我可以查詢的字段但不這意味着該領域正在分析?所以現在我需要爲每個關鍵字字段指定一個noop分析器,我認爲這很奇怪。除非關鍵字的默認分析儀是關鍵字分析儀(即noop) – BonitoFlakes

+0

是的,默認情況下會分析它。這是搜索引擎的一個非常合理的默認值。但您可以更改默認分析器:https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer.html – Javier

+0

似乎對於「關鍵字」類型,它不會接受「分析器」,因爲它會拋出錯誤。官方文檔沒有提及「關鍵字」類型的默認分析器。然而,您的原始消息幫助我意識到我在索引和分析之間感到困惑,所以我將其標記爲答案 – BonitoFlakes