一个 tokenizer(分词器)接收一个字符流,将之分割为独立的 tokens(词元,通常是独立
的单词),然后输出 tokens 流。
例如,whitespace tokenizer 遇到空白字符时分割文本。它会将文本 "Quick brown fox!" 分割
为 [Quick, brown, fox!]。
该 tokenizer(分词器)还负责记录各个 term(词条)的顺序或 position 位置(用于 phrase 短
语和 word proximity 词近邻查询),以及 term(词条)所代表的原始 word(单词)的 start
(起始)和 end(结束)的 character offsets(字符偏移量)(用于高亮显示搜索的内容)。
Elasticsearch 提供了很多内置的分词器,可以用来构建 custom analyzers(自定义分词器)
POST _analyze
{
"analyzer": "standard",
"text": "我是中国人"
}
analyzer:分词器 这个指定的是默认的 text:要分词的内容
这个分词结果并不好,我们希望的应该是 我 是 中国人 所以我们对中文应该安装适合中文的分词器
安装ik分词器下载链接:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-anal
ysis-ik-7.4.2.zip 推荐直接下载然后解压到ik文件夹(自己创建一个)用xshell连接服务器再用xfpt传到 es挂载目录上(如果是按照我之前博客安装的话目录是/mydata/elasticsearch/plugin下 )
然后再 chmod -R 777 ik
可以确认是否安装好了分词器
cd ../bin
elasticsearch plugin list:即可列出系统的分词器,如果有ik则说明成功。
然后 docker restart elasticsearch重启es则安装完成
再在kibana实验
POST _analyze
{
"analyzer": "ik_smart",
"text": "我是中国人"
}
POST _analyze
{
"analyzer": "ik_max_word",
"text": "我是中国人"
}
能够看出不同的分词器,分词有明显的区别,所以以后定义一个索引不能再使用默认的 mapping 了,要手工建立 mapping, 因为要选择分词器。



