分析器做用是將指定字符串處理成多個單個的詞條,建立倒排索引。當索引數據時,分析器會將對應的數據處理分詞後,建立倒排索引,當搜索時,將待搜索的字符串處理成詞條,再去倒排索引中搜索對應的文檔。git
分析器包含以下三個:github
首先,字符串按順序經過每一個 字符過濾器 。他們的任務是在分詞前整理字符串。一個字符過濾器能夠用來去掉HTML,或者將 & 轉化成 `and`。
其次,字符串被 分詞器 分爲單個的詞條。一個簡單的分詞器遇到空格和標點的時候,可能會將文本拆分紅詞條。
最後,詞條按順序經過每一個 token 過濾器 。這個過程可能會改變詞條(例如,小寫化 Quick ),刪除詞條(例如, 像 a`, `and`, `the 等無用詞),或者增長詞條(例如,像 jump 和 leap 這種同義詞)
測試分析器:app
GET /_analyze { "analyzer": "standard", # 分析器 "text": "Text to analyze" # 待分析的詞 }
經過設置_mapping中的properties, 能夠設置對應全文域字段的分析器elasticsearch
{ "tweet": { "type": "text", "analyzer": "english" } }
如上就是設置tweet字段的分析器爲english測試
當咱們處理的是中文時,須要設置中文分詞器。ui
使用ik分詞,須要安裝elasticsearch-analysis-ik elasticsearch-analysis-ik的github地址: https://github.com/medcl/elasticsearch-analysis-ikcode
當時es版本爲5.6.3, 經過文檔得知,能夠直接在elasticsearch安裝目錄下執行:索引
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.3/elasticsearch-analysis-ik-5.6.3.zip
安裝成功後,就能夠使用中文分詞器token
咱們在設置_mapping時,能夠指定字段的analyzer爲ik_smart 或ik_max_wordip
{ "tweet": { "type": "text", "analyzer": "ik_smart" } }
也能夠經過_analyze進行測試分詞結果