分析器做用是将指定字符串处理成多个单个的词条,建立倒排索引。当索引数据时,分析器会将对应的数据处理分词后,建立倒排索引,当搜索时,将待搜索的字符串处理成词条,再去倒排索引中搜索对应的文档。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进行测试分词结果